我有一个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)
该代码的输出是:
网格最高分:0.720298870251
网格评分函数:0.888263112299
我的问题是best_score_
和score
函数的区别是什么?
score
函数如何优于best_score
函数
best_score_
是交叉验证的最佳分数。即模型对训练数据的部分进行拟合,通过对其余训练数据的预测计算得分。这是因为您将X_train
和y_train
传递给fit
;因此,fit
进程不知道你的测试集的任何信息,只知道你的训练集。
模型对象的score
方法根据您提供的数据对模型进行评分。您通过了X_test
和y_test
,因此此调用计算测试集上的拟合(即调优)模型的分数。
简而言之,这两个分数是在不同的数据集上计算的,所以它们的不同不应该令人惊讶。