python做混淆矩阵
时间: 2023-06-08 18:08:12 浏览: 92
可以使用scikit-learn库的confusion_matrix函数来实现混淆矩阵的计算。具体操作为:
1. 将模型预测结果和真实结果分别存储在两个列表中;
2. 调用confusion_matrix函数,传入真实结果和模型预测结果作为参数,即可得到混淆矩阵。
下面是一个简单的示例代码:
```python
from sklearn.metrics import confusion_matrix
# 真实结果
true_results = [1, 0, 1, 0, 1, 1, 0, 0]
# 模型预测结果
predicted_results = [1, 0, 0, 0, 1, 0, 1, 1]
# 计算混淆矩阵
cm = confusion_matrix(true_results, predicted_results)
print(cm)
```
输出结果为:
```
[[2 2]
[2 2]]
```
具体解释:
- 第一行第一列:真实结果为0,模型预测为0的数量为2;
- 第一行第二列:真实结果为0,模型预测为1的数量为2;
- 第二行第一列:真实结果为1,模型预测为0的数量为2;
- 第二行第二列:真实结果为1,模型预测为1的数量为2。
注意,混淆矩阵的行代表真实结果,列代表模型预测结果。
相关问题
python 绘制混淆矩阵
要使用Python绘制混淆矩阵,你可以使用混淆矩阵的数据来创建热力图。下面是一个使用Matplotlib库绘制混淆矩阵的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义混淆矩阵数据
confusion_matrix = np.array([[100, 10, 0],
[5, 90, 5],
[0, 8, 92]])
# 计算各类别的总数
class_totals = confusion_matrix.sum(axis=1)
# 计算各类别的准确率
class_accuracy = confusion_matrix / class_totals[:, np.newaxis]
# 设置标签
labels = ['Class A', 'Class B', 'Class C']
# 创建热力图
fig, ax = plt.subplots()
im = ax.imshow(class_accuracy, cmap='Blues')
# 设置颜色条
cbar = ax.figure.colorbar(im, ax=ax)
# 设置坐标轴标签
ax.set(xticks=np.arange(class_accuracy.shape[1]),
yticks=np.arange(class_accuracy.shape[0]),
xticklabels=labels, yticklabels=labels,
title='Confusion Matrix',
ylabel='True label',
xlabel='Predicted label')
# 在热力图中显示数值
for i in range(class_accuracy.shape[0]):
for j in range(class_accuracy.shape[1]):
ax.text(j, i, format(class_accuracy[i, j], '.2f'),
ha="center", va="center", color="white")
# 确保标签不被裁剪
plt.tight_layout()
# 显示图形
plt.show()
```
你可以根据你实际的混淆矩阵数据进行修改。这段代码会生成一个热力图,其中每个单元格表示分类器在预测时的准确率。标签显示了真实标签和预测标签的类别。
python计算混淆矩阵
混淆矩阵是一种用于评估分类模型性能的方法,通常用于监督学习。在计算机视觉和自然语言处理等领域,混淆矩阵是一个非常有用的工具。Python提供了方便的库来计算混淆矩阵。
在Python中,可以使用scikit-learn库来计算混淆矩阵。scikit-learn是一个广泛使用的机器学习库,因为它提供了许多实用的函数和工具,可用于各种机器学习问题。在使用scikit-learn计算混淆矩阵时,可以遵循以下步骤:
1. 导入所需的库,包括numpy和sklearn的metrics:
```python
import numpy as np
from sklearn.metrics import confusion_matrix
```
2. 准备真实标签和预测标签:将分类器对测试集的分类结果和真实标签进行比对,生成混淆矩阵。
```python
y_true = [0, 1, 0, 1, 0, 0, 1]
y_pred = [0, 1, 0, 0, 0, 1, 0]
```
3. 使用 `confusion_matrix()` 函数计算混淆矩阵:
```python
cm = confusion_matrix(y_true, y_pred)
print(cm)
```
输出结果为:
```python
array([[3, 1],
[2, 1]], dtype=int64)
```
以上结果中,混淆矩阵都是 $2*2$ 的形式,即:
|真实标签\预测标签|Positive|Negative|
|:-:|:-:|:-:|
|Positive|True Positive(TP)|False Negative(FN)|
|Negative|False Positive(FP)|True Negative(TN)|
在混淆矩阵中,左上角的元素表示真正例(True Positive, TP)的数量,即正确分类为正例的样本数;右下角的元素表示真反例(True Negative,TN)的数量,即正确分类为反例的样本数;左下角的元素表示假反例(False Negative, FN)的数量,即实际上是正例而被分类器错误地分类为反例的数量;右上角的元素表示假正例(False Positive,FP)的数量,即实际上是反例而被分类器错误地分类为正例的数量。
通过计算混淆矩阵,可以计算出多种评估模型性能的指标,例如准确率(accuracy)、召回率(recall)、精度(precision)和F1值等,从而提高模型的性能,并针对问题进行更有针对性的调整。
阅读全文