Sci-kit:使用GridSearchCV时,获取估算器混淆矩阵的最简单方法是什么?

Zac*_*ler 7 python scikit-learn

在这个简化的例子中,我用GridSearchCV训练了一个学习者.我想在预测全集X时返回最佳学习者的混淆矩阵.

lr_pipeline = Pipeline([('clf', LogisticRegression())])
lr_parameters = {}

lr_gs = GridSearchCV(lr_pipeline, lr_parameters, n_jobs=-1)
lr_gs = lr_gs.fit(X,y)

print lr_gs.confusion_matrix # Would like to be able to do this
Run Code Online (Sandbox Code Playgroud)

谢谢

Sud*_*kar 7

您首先需要预测使用最佳估算器GridSerarchCV.一个常用的方法是GridSearchCV.decision_function(),但是对于您的示例,decision_function返回类概率LogisticRegression和不起作用confusion_matrix.相反,lr_gs使用该估算器找到使用和预测标签的最佳估算器.

y_pred = lr_gs.best_estimator_.predict(X)
Run Code Online (Sandbox Code Playgroud)

最后,使用sklearn的confusion_matrix真实和预测y

from sklearn.metrics import confusion_matrix
print confusion_matrix(y, y_pred)
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,估计器将适合 X,因此您需要事先分离测试数据 (2认同)
  • 这是行不通的,正如之前指出的,您需要分离测试数据,而 GridSerarchCV 将其隐藏在幕后。 (2认同)