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