我对来自不同库的两种不同方法有疑问,这些方法看起来做同样的工作。我正在尝试制作线性回归模型。
以下是我使用带有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使用训练数据集。所以我的问题,
感谢您的帮助。