使用GridSearchCV会在scikit-learn中使用CalibratedClassifierCV给出错误。 GridSearchCV对象没有属性'best_params_

时间:2018-10-25 06:05:26

标签: scikit-learn grid-search

我将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 _”

1 个答案:

答案 0 :(得分:1)

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

那是部分正确的。

会发生什么:

  • CalibratedClassifierCV将克隆提供的估计量,然后将数据拟合到该克隆上。所以你这样做

    rf_calibrated.base_estimator`
    

    将仅返回不具有best_params_属性的不适合的估计量。 best_params_仅在安装后可用。

从CalibratedClassifierCV中检查best_params_毫无意义,因为它将把数据分为5部分(就像您完成cv=5一样),并且每一折叠都在一个单独的克隆上进行训练,因此您可能会有多个best_params,具体取决于数据。