使用 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代码;这是一段相当基本的代码,因为我刚刚开始使用机器学习应用程序。请仔细阅读并告诉我为什么会这样。此外,如果您可以分享您对任何低效代码的见解,我将不胜感激。这是代码:
你犯了一个错误,这解释了奇怪的结果。当您使用 scikit-learn 从线性模型进行预测时,您会写:
predictions2 = lm.predict(xtest2)
请注意,您正在使用 lm
模型,这是第一个 statsmodels 回归产生的模型。相反,你应该写:
predictions2 = lm2.predict(xtest2)
执行此操作时,结果符合预期。
我想检查使用 Scikit-Learn 和 Statsmodels.api 解决多元线性回归问题时是否产生相同的输出。我分为 3 个部分(按照他们提到的顺序):Statsmodels(无拦截)、Statsmodels(有拦截)和 SKL。正如预期的那样,我的 SKL 系数和 R(square) 与 Statsmodels(有截距)相同,但我的 SKL 均方误差与 Statsmodels(无截距)相同。
我要分享我的notebook代码;这是一段相当基本的代码,因为我刚刚开始使用机器学习应用程序。请仔细阅读并告诉我为什么会这样。此外,如果您可以分享您对任何低效代码的见解,我将不胜感激。这是代码:
你犯了一个错误,这解释了奇怪的结果。当您使用 scikit-learn 从线性模型进行预测时,您会写:
predictions2 = lm.predict(xtest2)
请注意,您正在使用 lm
模型,这是第一个 statsmodels 回归产生的模型。相反,你应该写:
predictions2 = lm2.predict(xtest2)
执行此操作时,结果符合预期。