sklearn画混淆矩阵
时间: 2023-09-06 10:14:53 浏览: 128
您可以使用scikit-learn(sklearn)库中的`confusion_matrix`函数来绘制混淆矩阵。下面是一个示例代码:
```python
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# 假设y_true是真实标签,y_pred是预测标签
y_true = [0, 1, 0, 1, 1, 1]
y_pred = [0, 0, 0, 1, 1, 0]
# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)
# 绘制混淆矩阵
labels = ['Class 0', 'Class 1'] # 类别标签
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=labels, yticklabels=labels)
plt.title('Confusion Matrix')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()
```
这段代码会绘制一个热力图,其中每个单元格的值表示预测为某个类别的样本在真实标签中的数量。通过颜色的深浅可以直观地观察到分类结果的准确性和错误情况。
相关问题
sklearn中画混淆矩阵的代码
在sklearn中,可以使用`confusion_matrix()`函数来计算混淆矩阵。该函数需要传入真实标签和预测标签两个数组。下面是一个简单的例子:
```python
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 0, 1, 1, 1, 0, 0]
y_pred = [1, 1, 0, 1, 0, 1, 0, 0]
cm = confusion_matrix(y_true, y_pred)
print(cm)
```
输出结果:
```
[[3 1]
[1 3]]
```
上述代码中,`y_true`代表真实标签,`y_pred`代表预测标签。运行后会得到一个混淆矩阵,即:
| 真实标签/预测标签 | 预测为0 | 预测为1 |
| :--: | :-----: |
| 真实为0 | 3 | 1 |
| 真实为1 | 1 | 3 |
其中,第一行第一列的值表示真实标签为0,预测标签也为0的样本数量,以此类推。从混淆矩阵可以看出分类器在不同类别上的分类效果,进而分析如何改进模型。
另外,如果想要将混淆矩阵可视化,可以使用matplotlib库中的`matshow()`函数。下面是一个简单的例子:
```python
import matplotlib.pyplot as plt
plt.matshow(cm)
plt.colorbar()
plt.show()
```
运行后会得到一个可视化的混淆矩阵。
sklearn画多轮混淆矩阵
如果您想要绘制多轮混淆矩阵,您可以通过循环计算每一轮的混淆矩阵,并将它们绘制在一个图表中。以下是一个示例代码:
```python
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# 假设y_true是真实标签,y_pred是预测标签的列表
y_true = [[0, 1, 0, 1, 1, 1],
[1, 0, 0, 1, 0, 1],
[0, 0, 1, 1, 1, 0]]
y_pred = [[0, 0, 0, 1, 1, 0],
[1, 0, 0, 1, 1, 1],
[0, 1, 0, 1, 0, 1]]
# 初始化混淆矩阵的总和
cm_sum = None
# 计算每一轮的混淆矩阵并累加到总和
for i in range(len(y_true)):
cm = confusion_matrix(y_true[i], y_pred[i])
if cm_sum is None:
cm_sum = cm
else:
cm_sum += cm
# 绘制混淆矩阵
labels = ['Class 0', 'Class 1'] # 类别标签
sns.heatmap(cm_sum, annot=True, fmt="d", cmap="Blues", xticklabels=labels, yticklabels=labels)
plt.title('Confusion Matrix')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()
```
这段代码会计算多轮混淆矩阵的总和,并在一个图表中绘制出来。您可以根据需要循环添加更多的混淆矩阵,然后累加到总和中。通过观察整体的混淆矩阵,您可以获得对模型的整体分类性能的更全面了解。
阅读全文