我想验证一下使用Scikit-Learn和Statsmodels.api解决多元线性回归问题时,是否会产生相同的结果。我将这个过程分成了三个部分(按提到的顺序):Statsmodels(无截距项)、Statsmodels(有截距项)和SKL。如预期的那样,我的SKL系数和R平方与Statsmodels(有截距项)的结果相同,但我的SKL均方误差却与Statsmodels(无截距项)的结果相当。
我打算分享我的笔记本代码;这是一段相当基础的代码,因为我刚刚开始学习机器学习应用。请查看并告诉我为什么会出现这种情况。此外,如果您能分享关于任何低效代码的见解,我将不胜感激。以下是代码:
回答:
你犯了一个错误,这解释了奇怪的结果。当你使用scikit-learn的线性模型进行预测时,你写的是:
predictions2 = lm.predict(xtest2)
请注意,你使用的是lm
模型,这是第一个statsmodels回归的结果。相反,你应该写的是:
predictions2 = lm2.predict(xtest2)
当你这样做时,结果就会如预期的那样。