我有一个包含158行和10列的数据集。我尝试构建一个多元线性回归模型,并试图预测未来的值。
我使用了GridSearchCV来调整参数。
这是我的GridSearchCV和回归函数:
def GridSearch(data): X_train, X_test, y_train, y_test = cross_validation.train_test_split(data, ground_truth_data, test_size=0.3, random_state = 0) parameters = {'fit_intercept':[True,False], 'normalize':[True,False], 'copy_X':[True, False]} model = linear_model.LinearRegression() grid = GridSearchCV(model,parameters) grid.fit(X_train, y_train) predictions = grid.predict(X_test) print "Grid best score: ", grid.best_score_ print "Grid score function: ", grid.score(X_test,y_test)
这段代码的输出是:
Grid best score: 0.720298870251
Grid score function: 0.888263112299
我的问题是best_score_
和score
函数有什么区别?
score
函数怎么可能比best_score
函数更好?
提前感谢。
回答:
best_score_
是交叉验证中的最佳分数。也就是说,模型在训练数据的部分上进行拟合,分数是通过预测剩余的训练数据计算得出的。这是因为你将X_train
和y_train
传递给了fit
;因此,fit
过程对你的测试集一无所知,只知道你的训练集。
模型对象的score
方法会对你提供的数据进行评分。你传递了X_test
和y_test
,所以这个调用计算的是在测试集上拟合(即调整后的)模型的分数。
简而言之,这两个分数是在不同的数据集上计算的,所以它们不同并不 surprising。