【问题标题】:What is estimated probability(probas_pred) in sklearn.metrics.precision_recall_curve?sklearn.metrics.precision_recall_curve 中的估计概率(probas_pred)是多少?
【发布时间】:2020-07-28 12:46:57
【问题描述】:

sklearn.metrics.precision_recall_curve 需要 y_true 和 probas_pred 作为输入。 我认为要计算精度和召回率,我们需要真实标签(y_true)和预测标签(y_predict)。 那么为什么 sklearn 需要 probas_pred 呢?如何从 y_predict 获得 probas_pred? 谢谢。

【问题讨论】:

    标签: python scikit-learn precision-recall


    【解决方案1】:

    如果您查看sklearn help page on precision-recall,它会写道:

    precision-recall 曲线显示了精度和 召回不同的阈值。曲线下的高面积代表 高召回率和高精度,其中高精度与 低误报率,高召回率与低误报率有关 负利率

    通常,当您只使用真实标签和预测标签时,您是在以 0.5 的阈值评估精度或其他指标,并从那里计算精度。

    例如,如果我们将阈值提高到 0.6,即 p>0.6 将是正类而其他为负类,我们预计会减少误报,但我们也会损失一些。

    您使用 predict_proba 方法来获取概率。对于 2 类分类,第二列是您需要的正类的概率:

    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    from sklearn.svm import SVC
    import matplotlib.pyplot as plt
    from sklearn.metrics import precision_recall_curve
    
    dat = datasets.load_breast_cancer()
    X = dat.data
    y = dat.target
    X_train, X_test, y_train, y_test = train_test_split(X, y,train_size=0.5)
    
    clf = SVC(probability=True)
    clf.fit(X_train, y_train)
    y_score = clf.predict_proba(X_test)[:,1]
    
    precision, recall, _ = precision_recall_curve(y_test,y_score)
    
    plt.step(recall, precision, where='post')
    plt.ylim([0.0, 1.05])
    plt.xlim([0.0, 1.0])
    

    【讨论】:

      猜你喜欢
      • 2014-08-11
      • 2021-03-14
      • 2021-03-18
      • 1970-01-01
      • 2015-05-06
      • 2014-04-07
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多