Python 如何使用混淆矩阵计算定制训练的spacy-ner模型的总体精度?

Python 如何使用混淆矩阵计算定制训练的spacy-ner模型的总体精度?,python,machine-learning,spacy,ner,Python,Machine Learning,Spacy,Ner,我正在尝试评估我定制的Spacy-NER模型。如何通过模型的混淆矩阵找到整体精度 我试着用spacy scorer对模型进行评估,该模型给出了精确性、召回率和标记准确性,参考如下: 我希望输出的是混淆矩阵,而不是单个精度、召回率和标记精度。是创建Spacy NER模型混淆矩阵的好读物。 它基于Spacy使用的BILOU格式。它适用于小部分文本,但当评估较大的文档时,混淆矩阵很难读取,因为大部分文本都是O型标记的 您可以创建两个列表,一个是每个单词的预测值,另一个是每个单词的真实值,并使用skl

我正在尝试评估我定制的Spacy-NER模型。如何通过模型的混淆矩阵找到整体精度

我试着用spacy scorer对模型进行评估,该模型给出了精确性、召回率和标记准确性,参考如下:

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

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

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

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_conflusion_matrix()函数来获得视觉输出,但是这需要scikit learn 0.23.1或更高版本,并且仅可用于scikit learn分类器

如stackoverflow问题中所述,这是一种使用scikit learn中的混淆矩阵()的方法,而不需要它们的绘图

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()

我认为,由于模型是使用由正值(所有值都有标签)组成的测试数据进行评估的,在这种情况下,没有机会计算真负值,因此我们无法使用混淆矩阵计算精度。如果有任何其他方法来解决上述问题,请帮助我。