gpt4 book ai didi

python-3.x - GridSearchCV 给出的最佳估计值与 retrofit 参数中指示的估计值不同

转载 作者:行者123 更新时间:2023-12-04 08:08:08 25 4
gpt4 key购买 nike

我正在使用 GridSearchCV 进行超参数优化

scoring_functions = {'mcc': make_scorer(matthews_corrcoef), 'accuracy': make_scorer(accuracy_score), 'balanced_accuracy': make_scorer(balanced_accuracy_score)}

grid_search = GridSearchCV(pipeline, param_grid=grid, scoring=scoring_functions, n_jobs=-1, cv=splitter, refit='mcc')
我将 retrofit 参数设置为 'mcc'所以我希望 GridSearchCV 选择最好的模型来最大化这个指标。然后我计算一些分数
preds = best_model.predict(test_df)
metrics['accuracy'] = round(accuracy_score(test_labels, preds),3)
metrics['balanced_accuracy'] = round(balanced_accuracy_score(test_labels, preds),3)
metrics['mcc'] = round(matthews_corrcoef(test_labels, preds),3)
我得到了这些结果
"accuracy": 0.891, "balanced_accuracy": 0.723, "mcc": 0.871
现在,如果我这样做是为了在相同的测试集上获得模型的分数(不首先计算预测),就像这样
best_model = grid_search.best_estimator_
score = best_model.score(test_df, test_labels)
我得到的分数是这样的
"score": 0.891
如您所见,这是准确度,而不是 mcc 分数。根据评分函数的文档,它说

Returns the score on the given data, if the estimator has been refit.

This uses the score defined by scoring where provided, and thebest_estimator_.score method otherwise.


我没有正确理解。我想,如果我像我在 GridSearchCV 中使用 refit 参数指定的那样重新拟合模型,结果应该是用于重新拟合模型的评分函数?我错过了什么吗?

最佳答案

当您访问属性 best_estimator_您将转到底层基本模型,忽略您对 GridSearchCV 所做的所有设置目的:

best_model = grid_search.best_estimator_
score = best_model.score(test_df, test_labels)
您应该使用 grid_search.score()相反,通常与该对象交互。例如,在预测时,使用 grid_search.predict() .
这些方法的签名与标准估算器的签名相同(拟合、预测、评分等)。
您可以使用底层模型,但它不一定继承您对网格搜索对象本身所做的配置。

关于python-3.x - GridSearchCV 给出的最佳估计值与 retrofit 参数中指示的估计值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66116996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com