【发布时间】:2014-10-03 00:47:15
【问题描述】:
我正在建立一个逻辑回归模型如下:
cross_validation_object = cross_validation.StratifiedKFold(Y, n_folds = 10)
scaler = MinMaxScaler(feature_range = [0,1])
logistic_fit = LogisticRegression()
pipeline_object = Pipeline([('scaler', scaler),('model', logistic_fit)])
tuned_parameters = [{'model__C': [0.01,0.1,1,10],
'model__penalty': ['l1','l2']}]
grid_search_object = GridSearchCV(pipeline_object, tuned_parameters, cv = cross_validation_object, scoring = 'roc_auc')
我查看了最佳估计器的 roc_auc 分数:
grid_search_object.best_score_
Out[195]: 0.94505225726738229
但是,当我使用最佳估计器对整个训练集进行评分时,我得到的分数更差:
grid_search_object.best_estimator_.score(X,Y)
Out[196]: 0.89636762322433028
这怎么可能?我做错了什么?
编辑:没关系。我是个白痴。 grid_search_object.best_estimator_.score 计算准确性,而不是 auc_roc。正确的?
但如果是这样的话,GridSearchCV 是如何计算 grid_scores_ 的呢?它是为每个参数选择最佳决策阈值,还是决策阈值始终为 0.5?对于 ROC 曲线下的面积,决策阈值无关紧要,但对于 f1_score 而言,它确实如此。
【问题讨论】:
标签: python scikit-learn