python - 如何在 GridSearchCV 中评估分类器的准确性并生成留一的 roc 曲线?

标签 python machine-learning scikit-learn statistics

我有一个发送到网格搜索的处理管道,它使用留一(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_ 会重新拟合整个集。我担心使用 refit 估计器创建 roc 曲线会产生过于乐观的结果。

最佳答案

你的担心是有道理的,当然使用 retrofit 后的估计器来估计 AUC 肯定会过于乐观。通常,我会将数据分为训练和测试,然后再运行交叉验证的网格/随机搜索,以在启用 retrofit 的数据训练部分上运行超参数。稍后我将使用测试部分来计算更可能代表真实值的任何其他指标,因为模型以前从未见过它们。

关于python - 如何在 GridSearchCV 中评估分类器的准确性并生成留一的 roc 曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659929/

相关文章:

scikit-learn - 支持向量回归的程度 - RBF Kernel

python - 在不传递调用对象的情况下将 Python 对象的变量作为函数调用

python - 如何更改特定列的特定行的值,以及pandas中同一数据框中特定行的值

python - 池映射未使用所有可用资源的可能原因

image-processing - 关于构建检测图像中瞳孔的程序的提示

tensorflow - SSD Inception v2。 VGG16 特征提取器是否被 Inception v2 取代?

python - 使用 SciKit 对句子进行分类

python - 谷歌云端硬盘 Python API : Uploading Large Files

python - 理解 Python 中 Spark MLlib 的 LinearRegressionWithSGD 示例有问题吗?

Python:使用 MLPRegressor 拟合 3D 函数