python-3.x - 在精确召回曲线图中绘制多条线的问题
问题描述
为此,我试图在一个图中绘制多类的精度召回曲线,我在下面的代码中使用
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()
但我得到了不同类别的多个数字。我无法指出我的代码中的错误。 我有这样的单行
但我希望这个数字看起来像 所有班级的数字中的多行
我将不胜感激有关此问题的任何帮助。
解决方案
您正在 for 循环内绘制线条,但您的plt.show()
函数也在 内for loop
,因此这将导致绘制最后一个 for 循环循环的结果。将您的plt.show()
功能放在for loop
.
推荐阅读
- wordpress - 空白国家/州下拉菜单并在 woocommerce 设置中销售到特定国家/地区
- unity3d - 在增强现实中将 3d 对象放置在真实对象上
- hibernate - Hibernate 带宽问题:比 SQL Developer 花费更多的时间
- azure - 带有 PowerShell 5+ 的 Azure 的应用程序、创建日期、权限和 2FA 设置列表
- go - 如果我的密钥都被命名为“密钥”,如何从 BSON 获取 JSON?
- git - 列出 git 中最新编辑的文件
- javascript - 我需要在 Gatsby 插件中设置什么?
- selenium - webdriver W3C 协议是什么意思。它与 JSON 协议有何不同
- java - HTTP 响应显示 Accept=multipart/form-data 但未设置此标头并设置 CamelAcceptContentType, "application/json"
- oracle - 计数在使用条件的触发器中不起作用