首页 > 解决方案 > 在精确召回曲线图中绘制多条线的问题

问题描述

为此,我试图在一个图中绘制多类的精度召回曲线,我在下面的代码中使用

def plot_prc(y_test, y_score, N_classes):
    precision = dict()
    recall = dict()
    average_precision = dict()
    for i in range(N_classes):
        precision[i], recall[i], _ = precision_recall_curve(y_test[:, i],y_score[:, i])
        average_precision[i] = average_precision_score(y_test[:, i], y_score[:, i])
    for i in range(N_classes):
        plt.plot(recall[i], precision[i], lw=2, label='class {}'.format(i,average_precision[i] ))
        #plt.plot(recall[i], precision[i], lw=2, label='class {}'.format(i))
        plt.plot([0, 1], [0, 1], 'k--')
        plt.xlabel("recall")
        plt.ylabel("precision")
        plt.legend(loc="best")
        plt.title("precision vs. recall curve")
        plt.show()

但我得到了不同类别的多个数字。我无法指出我的代码中的错误。 我有这样的单行

对于 1 类曲线

但我希望这个数字看起来像 所有班级的数字中的多行

我将不胜感激有关此问题的任何帮助。

标签: python-3.xmatplotlibscikit-learndeep-learning

解决方案


您正在 for 循环内绘制线条,但您的plt.show()函数也在 内for loop,因此这将导致绘制最后一个 for 循环循环的结果。将您的plt.show()功能放在for loop.


推荐阅读