您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

官方文档中的pyspark线性回归示例-错误的结果?

官方文档中的pyspark线性回归示例-错误的结果?

对于初学者,您缺少拦截。尽管自变量的平均值接近零:

parsedData.map(lambda lp: lp.features).mean()
## DenseVector([-0.031, -0.0066, 0.1182, -0.0199, 0.0178, -0.0249,
##     -0.0294, 0.0669]

因变量的平均值离它很远:

parsedData.map(lambda lp: lp.label).mean()
## 2.452345085074627

在这种情况下,强制回归线穿过原点是没有意义的。因此,让我们看看如何LinearRegressionWithSGD使用认参数和添加拦截执行:

model = LinearRegressionWithSGD.train(parsedData, intercept=True)
valuesAndPreds = (parsedData.map(lambda p: (p.label, model.predict(p.features))))
valuesAndPreds.map(lambda vp: (vp[0] - vp[1]) ** 2).mean()
## 0.44005904185432504

让我们将其与分析解决方案进行比较

import numpy as np
from sklearn import linear_model

features = np.array(parsedData.map(lambda lp: lp.features.toArray()).collect())
labels = np.array(parsedData.map(lambda lp: lp.label).collect())

lm = linear_model.LinearRegression()
lm.fit(features, labels)
np.mean((lm.predict(features) - labels) ** 2)
## 0.43919976805833411

尽您所能,使用获得的结果LinearRegressionWithSGD几乎是最佳的。

您可以添加网格搜索,但是在这种特殊情况下,可能没有任何收获。

其他 2022/1/1 18:27:50 有541人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶