标记为 TP、TN、FP、FN 的值的混淆矩阵
Confusion matrix for values labeled as TP, TN, FP, FN
我有一个 Pandas 数据框,想为列绘制一个混淆矩阵。
该列的值是已标记为“假阴性”、“假阳性”、“真阴性”和“真阳性”的字符串。
由于这些不是典型的 True/False 值,我如何使用这些值生成混淆矩阵(类似于 scikit-learn/matplotlib 生成的混淆矩阵)?
(编辑澄清)
假设我在一列中有以下值:
['True Positive', 'True Negative', 'False Positive', 'False Negative', 'True Negative', ..., True Positive', 'False Negative']
我可以将这些值汇总为 TP、TN、FP、FN 的总数。但是,我想显示一个类似于使用以下生成的混淆矩阵:
disp = sklearn.metrics.ConfusionMatrixDisplay(confusion_matrix=cm)
disp = disp.plot(cmap="Blues")
matplot.lib.pyplot.plt.show()
提前致谢!
解决这个问题的最简单方法如下:
TP = 0
TN = 0
FP = 0
FN = 0
for label in df.ColumnName:
if label == "True Positive":
TP += 1
elif label == "True Negative":
TN += 1
elif label == "False Positive":
FP += 1
else:
FN += 1
print("Confusion Matrix : ")
print(f"[{TP}] [{FP}]")
print(f"[{FN}] [{TN}]")
这里df
是dataframe变量。因此我们计算列的各个条目并简单地打印相同的条目。
另一种小得多的方法如下:
print(df['ColumnName'].value_counts()
然后使用以下代码绘制值
import matplotlib.pyplot as plt
import numpy as np
data = [[TP, FP],[FN, TN]]
heatmap = plt.pcolor(data)
plt.colorbar(heatmap)
plt.show()
我有一个 Pandas 数据框,想为列绘制一个混淆矩阵。
该列的值是已标记为“假阴性”、“假阳性”、“真阴性”和“真阳性”的字符串。
由于这些不是典型的 True/False 值,我如何使用这些值生成混淆矩阵(类似于 scikit-learn/matplotlib 生成的混淆矩阵)?
(编辑澄清) 假设我在一列中有以下值:
['True Positive', 'True Negative', 'False Positive', 'False Negative', 'True Negative', ..., True Positive', 'False Negative']
我可以将这些值汇总为 TP、TN、FP、FN 的总数。但是,我想显示一个类似于使用以下生成的混淆矩阵:
disp = sklearn.metrics.ConfusionMatrixDisplay(confusion_matrix=cm)
disp = disp.plot(cmap="Blues")
matplot.lib.pyplot.plt.show()
提前致谢!
解决这个问题的最简单方法如下:
TP = 0
TN = 0
FP = 0
FN = 0
for label in df.ColumnName:
if label == "True Positive":
TP += 1
elif label == "True Negative":
TN += 1
elif label == "False Positive":
FP += 1
else:
FN += 1
print("Confusion Matrix : ")
print(f"[{TP}] [{FP}]")
print(f"[{FN}] [{TN}]")
这里df
是dataframe变量。因此我们计算列的各个条目并简单地打印相同的条目。
另一种小得多的方法如下:
print(df['ColumnName'].value_counts()
然后使用以下代码绘制值
import matplotlib.pyplot as plt
import numpy as np
data = [[TP, FP],[FN, TN]]
heatmap = plt.pcolor(data)
plt.colorbar(heatmap)
plt.show()