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

时间:2017-07-25 20:17:53

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

我想检查使用Scikit-Learn和Statsmodels.api解决多元线性回归问题是否产生相同的输出。我在3个部分(按照他们提到的顺序)做了: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

1 个答案:

答案 0 :(得分:0)

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

predictions2 = lm.predict(xtest2)

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

predictions2 = lm2.predict(xtest2)

执行此操作时,结果与预期一致。

相关问题