使用Scikit-learn和Statsmodels进行线性回归的比较

我想验证一下使用Scikit-Learn和Statsmodels.api解决多元线性回归问题时,是否会产生相同的结果。我将这个过程分成了三个部分(按提到的顺序):Statsmodels(无截距项)、Statsmodels(有截距项)和SKL。如预期的那样,我的SKL系数和R平方与Statsmodels(有截距项)的结果相同,但我的SKL均方误差却与Statsmodels(无截距项)的结果相当。

我打算分享我的笔记本代码;这是一段相当基础的代码,因为我刚刚开始学习机器学习应用。请查看并告诉我为什么会出现这种情况。此外,如果您能分享关于任何低效代码的见解,我将不胜感激。以下是代码:

https://github.com/vgoel60/Linear-Regression-using-Sklearn-vs-Statsmodel.api/blob/master/Linear%20Regression%20Boston%20Housing%20Prices%20using%20Scikit-Learn%20and%20Statsmodels.api.ipynb


回答:

你犯了一个错误,这解释了奇怪的结果。当你使用scikit-learn的线性模型进行预测时,你写的是:

predictions2 = lm.predict(xtest2)

请注意,你使用的是lm模型,这是第一个statsmodels回归的结果。相反,你应该写的是:

predictions2 = lm2.predict(xtest2)

当你这样做时,结果就会如预期的那样。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注