【问题标题】:Using GridSearchCV gives an error with CalibratedClassifierCV in scikit-learn. GridSearchCV object has no attribute 'best_params_在 scikit-learn 中使用 GridSearchCV 会导致 CalibratedClassifierCV 出现错误。 GridSearchCV 对象没有属性 'best_params_
【发布时间】:2019-03-29 15:45:42
【问题描述】:

我将 CalibratedClassifierCV 与 RandomForest 一起使用,并使用 GridSearch 来确定最佳参数。但是,当我使用 GridSearchCV 读回最佳参数时,它说 GridSearchCV 对象没有属性 'best_params_'

from sklearn.calibration import CalibratedClassifierCV
from classifiers import SVMClassification 
from sklearn.model_selection import  GridSearchCV
from imblearn.pipeline import Pipeline as imbpipeline
        
pipeline=imbpipeline([ ('oversample', Sampling(random_state=444)),('rf', rf())])
paramgrid=[ {'rf__max_depth': [8,10], 'rf__n_estimators':[3,5]}]           
grid_search_rf = GridSearchCV(pipeline, param_grid=paramgrid,cv=3)
rf_calibrated=CalibratedClassifierCV(grid_search_rf,cv=5, method="sigmoid")
rf_calibrated.fit(x_labelled,y_labelled)
print(rf_calibrated.base_estimator.best_params_)

输出

AttributeError: 'GridSearchCV' 对象没有属性 'best_params_'

【问题讨论】:

    标签: scikit-learn grid-search


    【解决方案1】:

    我假设您认为 CalibratedClassifierCV 将适合提供的估计器,然后以某种方式增强(校准)输出概率。

    部分正确。

    会发生什么:

    • CalibratedClassifierCV 将对提供的估计器进行克隆,然后将数据拟合到克隆中。所以你这样做

      rf_calibrated.base_estimator`
      

      只会返回一个没有best_params_属性的不合适的估计器。 best_params_ 需适配后才能使用。

    从 CalibratedClassifierCV 检查 best_params_ 没有任何意义,因为它会将数据分成 5 个部分(正如您所做的 cv=5),并且每个折叠都在单独的克隆上进行训练,因此您可能有多个best_params 取决于数据。

    【讨论】:

    • 但是一旦我拟合了数据,它确实会创建一个我用来预测的模型。该模型必须具有基本估计器的一些固定参数(估计器数量,深度),这里是随机森林。我想保存这些最佳参数,这样当我重新运行这个估计器时,我就不会再次对参数执行网格搜索。
    • @AMisra 没有。它有多个classifiers。请参阅 CalibratedClassifierCV 文档中的属性 calibrated_classifiers_。当您对其调用 predict 时,它会使用所有这些分类器(根据折叠将具有不同的参数组合),然后从所有这些中输出一些概率的加权平均值。
    • 谢谢。我现在明白了。如果我执行 rf_calibrated.calibrated_classifiers_[0].base_estimator.best_params_,那么我可以获得校准分类器之一的最佳估计器。
    • @VivekKumar 如果你这样做了:rf_calibrated=CalibratedClassifierCV(grid_search_rf.best_estimator,cv=5, method="sigmoid") 不正确?
    猜你喜欢
    • 2020-07-02
    • 2020-07-02
    • 1970-01-01
    • 2018-01-27
    • 2016-12-07
    • 2018-10-19
    • 2020-01-31
    • 2018-05-14
    相关资源
    最近更新 更多