使用refit=True的GridSearchCV获取最优估计器的正确用法咨询
GridSearchCV(refit=True) 预测前是否需要先调用.fit()?
我正在使用GridSearchCV寻找最优估计器,设置了默认的refit=True参数。根据官方文档说明:
The refitted estimator is made available at the best_estimator_ attribute and permits using predict directly on this GridSearchCV instance
请问我应当采用哪种写法?
写法一:先调用.fit()再预测
classifier = GridSearchCV(estimator=model,param_grid = parameter_grid['param_grid'], scoring='balanced_accuracy', cv = 5, verbose=3, n_jobs=4,return_train_score=True, refit=True) classifier.fit(x_training, y_train_encoded_local) predictions = classifier.predict(x_testing) balanced_error = balanced_accuracy_score(y_true=y_test_encoded_local,y_pred=predictions)
写法二:直接调用.predict()
classifier = GridSearchCV(estimator=model,param_grid = parameter_grid['param_grid'], scoring='balanced_accuracy', cv = 5, verbose=3, n_jobs=4,return_train_score=True, refit=True) predictions = classifier.predict(x_testing) balanced_error = balanced_accuracy_score(y_true=y_test_encoded_local,y_pred=predictions)
必须采用写法一,也就是先调用.fit(x_training, y_train_encoded_local),再调用.predict(x_testing)。
原因很明确:
- GridSearchCV是元估计器,必须通过
.fit()完成两个核心流程:遍历参数网格做交叉验证筛选最优参数、用全量训练数据重新训练最优模型(因为refit=True)。 - 只有完成
.fit()后,GridSearchCV才会生成best_estimator_属性,此时调用.predict()才会基于这个最优模型对测试数据做预测。 - 如果直接调用
.predict(),GridSearchCV还未经过训练,没有可用的预测模型,会直接抛出错误,根本无法生成有效预测结果。
官方文档里的"permits using predict directly on this GridSearchCV instance",前提是已经完成了.fit()步骤,得到了refit后的最优估计器。
内容的提问来源于stack exchange,提问作者Chronicles
相关产品推荐
相关产品推荐

