statsmodel OLS与scikit线性回归之间的差异

时间:2015-04-19 15:19:28

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

我对来自不同库的两种不同方法有疑问,这些方法看起来做同样的工作。我正在尝试制作线性回归模型。

以下是我使用带有OLS的statsmodel库的代码:

X_train, X_test, y_train, y_test = cross_validation.train_test_split(x, y, test_size=0.3, random_state=1)

x_train = sm.add_constant(X_train)
model = sm.OLS(y_train, x_train)
results = model.fit()

print "GFT + Wiki / GT  R-squared", results.rsquared

打印 GFT + Wiki / GT R平方0.981434611923

第二个是scikit学习库线性模型方法:

model = LinearRegression()
model.fit(X_train, y_train)

predictions = model.predict(X_test)

print 'GFT + Wiki / GT R-squared: %.4f' % model.score(X_test, y_test)

打印 GFT + Wiki / GT R平方:0.8543

所以我的问题是两种方法打印我们的R ^ 2结果,但一个打印输出0.98而另一个打印0.85。

根据我的理解,OLS使用训练数据集。所以我的问题,

  • 有没有办法处理使用OLS设置的测试数据?
  • 训练数据集得分是否给我们任何意义(在OLS中我们没有使用测试数据集)?根据我过去的知识,我们必须使用测试数据。
  • OLS和scikit线性回归之间有什么区别?我们用哪一个来计算模型的得分?

感谢您的帮助。

0 个答案:

没有答案