为什么 GridSearchCV 不给出最好的分数? - Scikit 学习

Why does not GridSearchCV give best score ? - Scikit Learn

我有一个包含 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_ 是交叉验证的最佳分数。也就是说,模型在 part 的训练数据上拟合,通过预测其余的训练数据来计算分数。这是因为你将 X_trainy_train 传递给了 fitfit 过程因此对您的测试集一无所知,只知道您的训练集。

模型对象的score方法根据您提供的数据对模型进行评分。您通过了 X_testy_test,因此此调用计算 测试 集上拟合(即调整)模型的分数。

简而言之,这两个分数是在不同的数据集上计算的,所以它们不同也就不足为奇了。