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

Md.*_*rim 5 python machine-learning scikit-learn precision-recall

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

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

Tur*_*us 5

predict_proba()产生形状 (N, k) 的输出,其中 N 是数据点的数量,k 是您尝试分类的类的数量。看来您有两个类,因此您有 2 列。假设您的标签(类)是 ["healthy", "diabetes"],如果预测数据点有 80% 的机会患有糖尿病,因此有 20% 的机会健康,那么该点的输出行将为 [0.2 , 0.8] 来反映这些概率。一般来说,您可以通过预测数组并获得第 k 类的概率model.predict_proba(X)[:,k-1]

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

predicted = logisticReg.predict_proba(X_test)
precision, recall, threshold = precision_recall_curve(y_test, predicted[:,1])
Run Code Online (Sandbox Code Playgroud)

对于中华民国:

predicted = logisticReg.predict_proba(X_test)
fpr, tpr, thresholds = precision_recall_curve(y_test, predicted[:,1])
Run Code Online (Sandbox Code Playgroud)

请注意,这将更改为多标签分类。您可以在此处的 sklearn 文档中找到一个示例