Python 在多类别分类中,如何根据不同类别标记TP、TN、FP、FN的计数?

Python 在多类别分类中,如何根据不同类别标记TP、TN、FP、FN的计数?,python,pandas,machine-learning,scikit-learn,multiclass-classification,Python,Pandas,Machine Learning,Scikit Learn,Multiclass Classification,我已经编写了一个代码,它使用scikit学习计算多类分类器的TP、TN、FP、FN计数。我面临的问题是,我希望在每个类中都表示此计数,如下所示: Actual Predicted iphone iphone samsung sony Sony sony bmw audi 我想要所有tn、tp、fn、fp类的计数,例如: tp tn tn tp bmw 25 15 40 50 samsung

我已经编写了一个代码,它使用scikit学习计算多类分类器的TP、TN、FP、FN计数。我面临的问题是,我希望在每个类中都表示此计数,如下所示:

Actual    Predicted
iphone      iphone
samsung     sony
Sony        sony
bmw         audi
我想要所有tn、tp、fn、fp类的计数,例如:

          tp   tn  tn  tp
bmw       25   15  40  50
samsung   20   28  35  55
这就是我的代码的外观:

import pandas as pd 
import numpy as np 
from sklearn.metrics import multilabel_confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report

#reading the input file
df = pd.read_excel('C:\\test.xlsx')

#Converting the columns to array
actual = df['Actual'].to_numpy()
predicted = df['Predicted'].to_numpy()


mcm = multilabel_confusion_matrix(actual, predicted)
#print(mcm)

tn = mcm[:, 0, 0]
tp = mcm[:, 1, 1]
fn = mcm[:, 1, 0]
fp = mcm[:, 0, 1]

print(tn,tp,fn,fp)

输出看起来是这样的,它只是19个类的tn,tp,fn,fp计数

array([182, 569, 568, 569, 545, 429, 566, 516, 504, 568, 534, 437, 567,
       569, 569, 569, 569, 567, 569], dtype=int64), array([111,   0,   0,   0,   7,  21,   0,   7,  37,   0,  15,  78,   0,
         0,   0,   0,   0,   0,   0], dtype=int64), array([ 48,   0,   0,   0,  16, 117,   0,  47,  17,   0,  13,  36,   0,
         0,   0,   0,   0,   0,   0], dtype=int64), array([229,   1,   2,   1,   2,   3,   4,   0,  12,   2,   8,  19,   3,
         1,   1,   1,   1,   3,   1], dtype=int64))

如何实现每个18的标记,并根据单个类别进行计数?

可能是?从混淆矩阵中,我获取了每个类别的tp、tn、fp、fn值,但问题是我想将每个计数映射到它们各自的类别中,而我无法做到这一点,并且从混淆矩阵中,我没有发生。参见
labels=df['Actual'].unique();mcm=multlabel\u composition\u matrix(实际,预测,labels=labels)
,然后按
labels
中的顺序标记行。我可以在这里获得唯一的类,这些类具有非零值…以便获得整个内容(即类及其各自的tp、tn、fp、fn)在一个数据帧中,我必须将不同列中的所有内容插入到一个新的数据帧中?使用
pd.dataframe({'tn':mcm[:,0,0],…},index=labels)
i能够获得结果。这是否正确?