python - 线性模型预测不一致

标签 python machine-learning scikit-learn linear-regression

我有一些数据:

df_shuffled = shuffle(df, random_state=123)
X = scale(df_shuffled[df_shuffled.columns[:-1]])
y = df_shuffled["cnt"]

然后我学习了简单的线性模型:

from sklearn.linear_model import LinearRegression
regr = LinearRegression()
regr.fit(X, y)

我知道我不应该使用学习样本来验证模型,但我只是想看看我是否理解它是如何工作的。

我有很好的预测,使用模型:

regr.predict(X)[:5]
array([ 5454.26166397,  3943.78784705,  2125.27231678,  2967.02153671,
    4474.29945607])

这与原始数据非常接近:

y[:5]
488    6421
421    3389
91     2252
300    3747
177    4708
Name: cnt, dtype: int64

另外,我有系数:

list(zip(df.columns, regr.coef_))
[('season', 570.86663333510262),
 ('yr', 1021.9670828146905),
 ('mnth', -141.30042168132388),
 ('holiday', -86.757534933339258),
 ('weekday', 137.22544688027938),
 ('workingday', 56.39322955869352),
 ('weathersit', -330.23017254975974),
 ('temp', 367.45598306317618),
 ('atemp', 585.57493105545359),
 ('hum', -145.60889630046199),
 ('windspeed(mph)', 12457254171589.174),
 ('windspeed(ms)', -12457254171787.625)]

正如我们所知,我们可以使用这样的学习模型进行预测: y=Xw,其中y是预测值向量,X是数据矩阵,w是系数向量(regr.coef_)。但是 whis 不起作用!

np.dot(X, regr.coef_)[:5]
array([  949.90689164,  -560.56692528, -2379.08245555, -1537.33323562,
     -30.05531626])

这与我们从 .predict 方法中得到的完全不同。为什么?我不明白...

最佳答案

如果我没记错的话 y 不仅仅是 Xw 你必须添加 y_intercept。即 y=Xw+b 其中 b 是截距。尝试运行

np.dot(X, regr.coef_)[:5]+regr.intercept_

关于python - 线性模型预测不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44872326/

相关文章:

machine-learning - 制作多层感知器的训练示例

python - 具有 mse 损失的 TensorFlow 未初始化值错误

python - Scikit-learn:如何在一维数组上运行 KMeans?

python - 动态定义类中的方法

python - 分组并加入值但保留所有列

python - 如何使用 Python 将文件压缩为受密码保护的存档

python - `rcond` 参数将更改为机器精度乘以默认值 `` max(M, N) `` 其中 M 和 N 是输入矩阵维度

Python Pandas pivot_table 在 pivot 之后缺少列

machine-learning - 神经网络成本函数随纪元数振荡

python - IncrementalPCA 和partial_fit - 组件数量