线性回归绘图报错求助:sklearn与matplotlib结合出现三类错误
问题分析与解决
核心错误点
- 变量名大小写不匹配:你定义的因变量是大写
Y,但在第二部分绘图的plt.scatter(X, y, alpha=0.3)中误写为小写y,这直接导致Python找不到该变量,进而引发你提到的TypeError/KeyError/InvalidIndexError等异常。 - 次要拼写问题:代码中
This is the part pf the code里的pf是of的笔误,不影响运行但建议修正。
修正后的完整代码
import pandas from pandas import DataFrame import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression data = pandas.read_csv('cost_revenue.csv') data.describe() # The CSV file contains 5034 entries. X = DataFrame(data, columns=['production_budget_usd']) Y = DataFrame(data, columns=['worldwide_gross_usd']) # 第一部分散点图(正常运行) plt.figure(figsize=(10,6)) plt.scatter(X, Y, alpha=0.3) plt.title('Film Cost vs Global Revenue') plt.xlabel('Production Budget $') plt.ylabel('Worldwide Gross $') plt.ylim(0, 3000000000) plt.xlim(0, 450000000) plt.show() # 线性回归与回归线绘制 regression = LinearRegression() regression.fit(X, Y) plt.figure(figsize=(10,6)) # 修正:将小写y改为大写Y plt.scatter(X, Y, alpha=0.3) plt.plot(X, regression.predict(X), color='red', linewidth=3) plt.title('Film Cost vs Global Revenue') plt.xlabel('Production budget $') plt.ylabel('worldwide gross $') plt.ylim(0,3000000000) plt.xlim(0,450000000) plt.show()
额外说明
- 修正变量名后,
plt.plot可正常绘制回归线:regression.predict(X)返回的预测值维度与X匹配,matplotlib能直接处理DataFrame/二维数组输入。 - 若后续仍有异常,可检查
cost_revenue.csv的列名是否与代码中production_budget_usd、worldwide_gross_usd完全一致,避免因列名不匹配引发KeyError。
内容的提问来源于stack exchange,提问作者CitronW
相关产品推荐
相关产品推荐

