0-1混淆矩阵的代码实现
时间: 2024-09-04 08:02:19 浏览: 23
0-1混淆矩阵,也称为精确率召回率矩阵或对角线矩阵,用于评估分类模型的性能,特别关注真正例(True Positives, TP)、假正例(False Positives, FP)、真负例(True Negatives, TN)和假负例(False Negatives, FN)。以下是一个简单的Python代码示例,使用pandas库来创建和显示混淆矩阵:
```python
import pandas as pd
# 假设我们有实际类别(y_true)和预测类别(y_pred)的数据
y_true = [1, 0, 0, 1, 1] # 实际标签
y_pred = [1, 0, 1, 1, 0] # 预测结果
# 计算混淆矩阵
conf_matrix = pd.crosstab(y_true, y_pred, rownames=['Actual'], colnames=['Predicted'])
print(conf_matrix)
```
运行上述代码后,你会得到类似这样的矩阵:
```
Predicted
0 1
Actual
0 FP TN
1 FN TP
```
其中`FP`、`FN`、`TP`和`TN`分别代表了混淆矩阵中的数值。
相关问题
0-1混淆矩阵的代码实现,其中TP=191,FN=85,FP=2,TN=3
如果已知TP(真正例)等于191,FN(假阴性)等于85,FP(假阳性)等于2,TN(真阴性)等于3,我们可以手动构建一个0-1混淆矩阵。在这种情况下,由于TP、FP、TN和FN都是整数,可以直接用字典或列表的形式表示:
```python
conf_matrix = {
'实际类别': ['真实阳性的(Positive)', '真实阴性的(Negative)'],
'预测类别': ['预测阳性的(Positive)', '预测阴性的(Negative)'],
'计数': [TP, FN, FP, TN]
}
# 将计数转为二维列表,方便展示
matrix_data = [[conf_matrix['计数'][i], conf_matrix['计数'][j]] for i, j in zip([1, 2], [0, 3])]
# 使用numpy或pandas展示矩阵
import numpy as np
conf_matrix_df = pd.DataFrame(matrix_data, index=['TP', 'FP'], columns=['实际阳性的(Positive)', '实际阴性的(Negative)'])
print(conf_matrix_df)
# 或者直接打印计数值
print("TP:", TP, "FN:", FN, "FP:", FP, "TN:", TN)
```
这将输出一个简单的文本形式的混淆矩阵以及每个值。
代码实现混淆矩阵可视化
混淆矩阵是一种用于评估分类模型性能的工具,它可以显示实际类别与预测类别之间的关系。在Python中,我们可以使用Scikit-learn库的confusion_matrix函数来计算混淆矩阵。然后,我们可以使用Matplotlib库的imshow函数将混淆矩阵可视化。
下面是一个简单的例子,展示如何使用Scikit-learn和Matplotlib库来实现混淆矩阵的可视化:
```python
# 导入必要的库
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
y_true = np.random.randint(0, 2, size=100)
y_pred = np.random.randint(0, 2, size=100)
# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)
# 可视化混淆矩阵
plt.imshow(cm, cmap=plt.cm.Blues)
# 添加标题、轴标签和刻度
plt.title('Confusion matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
tick_marks = np.arange(2)
plt.xticks(tick_marks, ['Class 0', 'Class 1'])
plt.yticks(tick_marks, ['Class 0', 'Class 1'])
# 添加文本标签
thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, format(cm[i, j], 'd'),
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")
# 显示图像
plt.show()
```
在这个例子中,我们首先生成了100个随机的实际类别和预测类别,并使用Scikit-learn库的confusion_matrix函数计算混淆矩阵。然后,我们使用Matplotlib库的imshow函数将混淆矩阵可视化。我们还添加了标题、轴标签和刻度,并使用文本标签在图像中显示混淆矩阵中的数字。最后,我们使用show函数显示图像。
这里的关键在于使用imshow函数将混淆矩阵可视化,以及使用text函数在图像中添加文本标签。你可以根据需要调整图像大小、颜色映射、文本标签样式等等。