Python Scikit&x27;s平均精度分数输入形状错误

Python Scikit&x27;s平均精度分数输入形状错误,python,scikit-learn,Python,Scikit Learn,我正试图绘制一条精确/回忆分数曲线。这是我的代码: lbl_enc = preprocessing.LabelEncoder() labels = lbl_enc.fit_transform(test_tags) y_score = clf.predict_proba(test_set) average_precision = average_precision_score(labels, y_score) print('Average precisi

我正试图绘制一条精确/回忆分数曲线。这是我的代码:

    lbl_enc = preprocessing.LabelEncoder()
    labels = lbl_enc.fit_transform(test_tags)

    y_score = clf.predict_proba(test_set)

    average_precision = average_precision_score(labels, y_score)
    print('Average precision-recall score: {0:0.2f}'.format(average_precision))

    precision, recall, _ = precision_recall_curve(labels, y_score)

    plt.step(recall, precision, color='b', alpha=0.2,
             where='post')
    plt.fill_between(recall, precision, step='post', alpha=0.2,
                     color='b')

    plt.xlabel('Recall')
    plt.ylabel('Precision')
    plt.ylim([0.0, 1.05])
    plt.xlim([0.0, 1.0])
    plt.title('2-class Precision-Recall curve: Average P-R = {0:0.2f}'.format(
        average_precision))
在计算平均_精度_分数时,我得到了由“y_分数”变量引起的“ValueError:bad input shape(119,2)”

y_分数采用以下格式:

array([[0.45953712, 0.54046288],
   [0.78289908, 0.21710092],
   [0.13488789, 0.86511211],
   [0.56162583, 0.43837417],
   (...)
   [0.4595595 , 0.5404405 ]])
当标签处于此状态时:

array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1])
如何计算平均精度分数?提前感谢。

在中,它说:

y_分数:数组,形状=[n_样本]或[n_样本,n_类]

目标分数,可以是阳性的概率估计值 类别、置信值或决策的非阈值度量 (由某些分类器上的“decision_函数”返回)

因此,我相信你只需要做:

average_precision  = average_precision_score(labels, y_score[:,1])
在报告中,它说:

y_分数:数组,形状=[n_样本]或[n_样本,n_类]

目标分数,可以是阳性的概率估计值 类别、置信值或决策的非阈值度量 (由某些分类器上的“decision_函数”返回)

因此,我相信你只需要做:

average_precision  = average_precision_score(labels, y_score[:,1])