首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用混淆矩阵计算自定义训练的spacy ner模型的总体精度?

如何使用混淆矩阵计算自定义训练的spacy ner模型的总体精度?
EN

Stack Overflow用户
提问于 2019-05-22 16:03:41
回答 1查看 1.9K关注 0票数 4

我在试着评估我的定制训练Spacy NER模型。如何用混淆矩阵求出模型的总体精度。

我试着用spacy scorer评估模型,它给出了精确度,召回率和令牌准确度,参考了下面的内容。

Evaluation in a Spacy NER model

我希望输出是混淆矩阵,而不是单个精度、召回率和标记准确性。

EN

回答 1

Stack Overflow用户

发布于 2020-07-21 15:47:15

Here是为Spacy NER模型创建混淆矩阵的一个很好的读物。它基于Spacy使用的BILOU格式。它对小部分文本很好,但是当评估较大的文档时,混淆矩阵很难阅读,因为大多数文本都是O标记的。

您可以做的是创建两个列表,一个包含每个单词的预测值,另一个包含每个单词的真实值,并使用sklearn.metrics.confusion_matrix()函数进行比较。

代码语言:javascript
复制
from sklearn.metrics import confusion_matrix
y_true = [O,O,O,B-PER,I-PER]
y_pred = [O,O,O,B-PER,O]
confusion_matrix(y_true, y_pred, labels=["O", "B-PER", "I-PER"])

您也可以使用同一个库中的plot_confusion_matrix()函数来获得可视输出,但是这需要scikit learn 0.23.1或更高版本,并且只能与scikit learn分类器一起使用。

正如在this stackoverflow问题中所写的,这是一种使用confusion_matrix()的方法--学习而不需要绘制它们的图。

代码语言:javascript
复制
from sklearn.metrics import confusion_matrix

labels = ['business', 'health']
cm = confusion_matrix(y_test, pred, labels)
print(cm)
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(cm)
plt.title('Confusion matrix of the classifier')
fig.colorbar(cax)
ax.set_xticklabels([''] + labels)
ax.set_yticklabels([''] + labels)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56252016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档