我有一个关于来自不同库的两种不同方法的问题,这些方法似乎做同样的工作。我正在尝试建立线性回归模型。
这是我将statsmodel库与OLS一起使用的代码:
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线性回归之间有什么区别。我们使用哪一个来计算模型的分数?
谢谢你的帮助。