sklearn中的predict_proba如何产生两列?它们的意义是什么?

时间:2019-04-27 17:00:37

标签: python machine-learning scikit-learn precision-recall

我当时使用简单的逻辑回归来预测问题,并尝试用predict_proba(X_test)绘制 precision_recall_curve roc_curve 。我检查了predict_proba的文档字符串,但是关于它的工作方式没有太多细节。每次输入都有错误,并检查y_testpredict_proba(X_test)不匹配。最终发现predict_proba()产生2列,人们使用第二列。

如果有人可以解释它如何产生两列及其意义,那将非常有帮助。 TIA。

2 个答案:

答案 0 :(得分:1)

predict_proba()产生形状(N,k)的输出,其中N是数据点的数量,k是您要分类的类的数量。看来您有两个类,因此您有2列。假设您的标签(类)为[“健康”,“糖尿病”],如果预测数据点有80%的机会患有糖尿病,因此有20%的机会是健康的,那么该点的输出行将为[0.2 ,0.8]来反映这些概率。通常,您可以遍历预测的数组并使用model.predict_proba(X)[:,k-1]

获得第k个类的概率

对于绘图,您可以对precision_recall_curve执行以下操作:

predicted = logisticReg.predict_proba(X_test)
precision, recall, threshold = precision_recall_curve(y_test, predicted[:,1])

对于中华民国:

predicted = logisticReg.predict_proba(X_test)
fpr, tpr, thresholds = precision_recall_curve(y_test, predicted[:,1])

请注意,对于多标签分类,这将改变。您可以在sklearn文档here

中找到一个示例

答案 1 :(得分:0)

我们可以使用分类器类来区分分类器。如果分类器名称为 model ,则 model.classes _ 将给出不同的类。