GridSearchCV return 拟合后 best_estimator_ 吗?
Does GridSearchCV return the best_estimator_ after fitting?
假设我们像这样使用 GridSearch 调整 SVM:
algorithm = SVM()
parameters = {'kernel': ['rbf', 'sigmoid'], 'C': [0.1, 1, 10]}
grid= GridSearchCV(algorithm, parameters)
grid.fit(X, y)
然后您希望在 cross_val_score
中使用最合适的 parameters/estimator。我的问题是,此时 grid
是哪个模型?它是表现最好的吗?换句话说,我们可以做吗
cross_val_scores = cross_val_score(grid, X=X, y=y)
或者我们应该使用
cross_val_scores = cross_val_score(grid.best_estimator_, X=X, y=y)
当我 运行 两者时,我发现它们 return 的分数并不相同,所以我很好奇这里的正确方法是什么。 (我假设使用 best_estimator_
。)不过,这引发了另一个问题,即:那么仅使用 grid
作为模型有什么用呢?第一个?
安装 GridSearchCV
后,您不需要 cross_val_score
。它已经具有允许您访问交叉验证分数的属性。 cv_results_
全部给你。如果您只想查看特定估算器的结果,可以使用 best_index
属性对其进行索引。
cv_results = pd.DataFrame(grid.cv_results_)
cv_results.iloc[grid.best_index_]
mean_fit_time 0.00046916
std_fit_time 1.3785e-05
mean_score_time 0.000251055
std_score_time 1.19038e-05
param_C 10
param_kernel rbf
params {'C': 10, 'kernel': 'rbf'}
split0_test_score 0.966667
split1_test_score 1
split2_test_score 0.966667
split3_test_score 0.966667
split4_test_score 1
mean_test_score 0.98
std_test_score 0.0163299
rank_test_score 1
Name: 5, dtype: object
您在拟合 GridSearchCV
上调用的大多数方法都使用最佳模型(例如,grid.predict(...)
为您提供最佳模型的预测)。 estimator
并非如此。您看到的差异可能来自于此。 cross_val_score
再次符合,但这次对 grid.estimator
而不是 grid.best_estimator_
得分。
假设我们像这样使用 GridSearch 调整 SVM:
algorithm = SVM()
parameters = {'kernel': ['rbf', 'sigmoid'], 'C': [0.1, 1, 10]}
grid= GridSearchCV(algorithm, parameters)
grid.fit(X, y)
然后您希望在 cross_val_score
中使用最合适的 parameters/estimator。我的问题是,此时 grid
是哪个模型?它是表现最好的吗?换句话说,我们可以做吗
cross_val_scores = cross_val_score(grid, X=X, y=y)
或者我们应该使用
cross_val_scores = cross_val_score(grid.best_estimator_, X=X, y=y)
当我 运行 两者时,我发现它们 return 的分数并不相同,所以我很好奇这里的正确方法是什么。 (我假设使用 best_estimator_
。)不过,这引发了另一个问题,即:那么仅使用 grid
作为模型有什么用呢?第一个?
安装 GridSearchCV
后,您不需要 cross_val_score
。它已经具有允许您访问交叉验证分数的属性。 cv_results_
全部给你。如果您只想查看特定估算器的结果,可以使用 best_index
属性对其进行索引。
cv_results = pd.DataFrame(grid.cv_results_)
cv_results.iloc[grid.best_index_]
mean_fit_time 0.00046916
std_fit_time 1.3785e-05
mean_score_time 0.000251055
std_score_time 1.19038e-05
param_C 10
param_kernel rbf
params {'C': 10, 'kernel': 'rbf'}
split0_test_score 0.966667
split1_test_score 1
split2_test_score 0.966667
split3_test_score 0.966667
split4_test_score 1
mean_test_score 0.98
std_test_score 0.0163299
rank_test_score 1
Name: 5, dtype: object
您在拟合 GridSearchCV
上调用的大多数方法都使用最佳模型(例如,grid.predict(...)
为您提供最佳模型的预测)。 estimator
并非如此。您看到的差异可能来自于此。 cross_val_score
再次符合,但这次对 grid.estimator
而不是 grid.best_estimator_
得分。