【问题标题】:Machine Learning liner Regression - Sklearn机器学习线性回归 - Sklearn
【发布时间】:2024-05-26 17:20:02
【问题描述】:

我是机器学习领域的新手,在学习回归方面我有一些疑问

1:在练习 sklearn 学习回归模型预测方法时出现以下错误。

代码:

sklearn.linear_model.LinearRegression.predict(25)

错误: “ValueError:预期的二维数组,得到的是标量数组:array=25。如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 或 array.reshape(1, -1) 如果包含一个样本。”

我需要传递一个二维数组吗?在 sklearn 文档页面上检查过任何没有发现任何版本更新的东西。 **在 Kaggle 上运行我的代码
https://www.kaggle.com/aman9d/bikesharingdemand-upx/

2:数据集的索引是否会影响模型的得分(权重)?

【问题讨论】:

  • 请认真考虑纠正您的代码 (predice??) 和(死)链接中的拼写错误...
  • 链接工作正常,是的,这里是错字,但在代码中我写得正确并出现上述错误。

标签: python-3.x machine-learning scikit-learn linear-regression


【解决方案1】:

首先你应该把你的代码放在你使用的地方:

# import, instantiate, fit
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
linreg.fit(X, y)

# use the predict method
linreg.predict(25)

由于您在问题中发布的内容无法正确执行,predict 方法对于 LinearRegression 类不是静态的。

当您拟合模型时,第一步是识别哪种数据将作为输入,在您的情况下类似于X,这意味着如果您将具有不同形状的X 传递给模型它会引发错误。

在您的示例中,X 似乎是一个只有 1 列的 pd.DataFrame() 实例,这应该可以替换为一个二维数组,该数组表示示例数和特征数,所以如果您尝试:

linreg.predict([[25]])

应该可以。

例如,如果您尝试使用多于 1 个特征(又名列)的回归,例如 temphumidity,您的输入将如下所示:

linreg.predict([[25, 56]])

我希望这会对您有所帮助,并始终牢记数据的形状。

文档:LinearRegression fit

X : 类数组或稀疏矩阵,形状 (n_samples, n_features)

【讨论】: