使用 Scikit-learn 与 Statsmodels 进行线性回归

Linear Regression using Scikit-learn vs Statsmodels

我想检查使用 Scikit-Learn 和 Statsmodels.api 解决多元线性回归问题时是否产生相同的输出。我分为 3 个部分(按照他们提到的顺序):Statsmodels(无拦截)、Statsmodels(有拦截)和 SKL。正如预期的那样,我的 SKL 系数和 R(square) 与 Statsmodels(有截距)相同,但我的 SKL 均方误差与 Statsmodels(无截距)相同。

我要分享我的notebook代码;这是一段相当基本的代码,因为我刚刚开始使用机器学习应用程序。请仔细阅读并告诉我为什么会这样。此外,如果您可以分享您对任何低效代码的见解,我将不胜感激。这是代码:

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)

执行此操作时,结果符合预期。