You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线性回归绘图报错求助: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:32:52