我有一个处理管道,我将其发送到网格搜索,该管道使用留一法(50个样本)来确定最佳模型,如下所示
scoring = {'acc': 'accuracy'}
refit = 'acc'
param_grid = {'clf__class_weight': ['balanced'],
'clf__C': [0.1, 0.5, 1.0],
'rf_select__max_features': [5, 10, 15, 20]}
pipe = Pipeline([
('rf_select', SelectFromModel(RandomForestClassifier(n_estimators=100)),
('clf', LogisticRegression())])
clf = GridSearchCV(pipe, param_grid, cv=LeaveOneOut(), scoring=scoring, refit=refit)
clf.fit(X, y)
我据此报告基于准确性的最佳分数,但我也希望获得RoC曲线。如果我采用
clf.best_estimator_
并使用整个X
中的预测概率来创建roc曲线,那么这些结果是否会过于乐观?我报告的clf.best_score_
准确度估计值是对所有休假集进行平均的结果,但clf.best_estimator_
可重新调整为整个集。我担心使用重新拟合估计器创建roc曲线会产生过于乐观的结果。 最佳答案
您的担心是正确的,当然,使用重新调整的估算器来估计AUC肯定会过分乐观。通常,我会在启用交叉调整的情况下对运行在数据训练部分上的超参数运行交叉验证的网格/随机搜索,然后将数据分为训练和测试。稍后,我将使用测试部分来计算任何其他更有可能表示真实值的指标,因为该模型从未见过它们。
关于python - 如何在GridSearchCV中评估分类器的准确性并生成roc曲线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55659929/