sklearn画混淆矩阵
时间: 2023-09-06 15:14:53 浏览: 60
您可以使用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画多轮混淆矩阵
如果您想要绘制多轮混淆矩阵,您可以通过循环计算每一轮的混淆矩阵,并将它们绘制在一个图表中。以下是一个示例代码:
```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()
```
这段代码会计算多轮混淆矩阵的总和,并在一个图表中绘制出来。您可以根据需要循环添加更多的混淆矩阵,然后累加到总和中。通过观察整体的混淆矩阵,您可以获得对模型的整体分类性能的更全面了解。
python画混淆矩阵
在Python中,你可以使用scikit-learn库来计算和绘制混淆矩阵。下面是一个示例代码,展示了如何使用scikit-learn来计算和绘制混淆矩阵:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
# 定义真实标签和预测标签
y_true = np.array([0, 1, 0, 1, 1, 0, 0, 1])
y_pred = np.array([0, 1, 1, 1, 0, 0, 1, 1])
# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)
# 绘制混淆矩阵
plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)
plt.title("Confusion Matrix")
plt.colorbar()
tick_marks = np.arange(2)
plt.xticks(tick_marks, ['Class 0', 'Class 1'])
plt.yticks(tick_marks, ['Class 0', 'Class 1'])
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
# 在每个格子中显示数值
thresh = cm.max() / 2.
for i in range(cm.shape[0]):
for j in 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()
```
这段代码首先导入了必要的库,然后定义了真实标签和预测标签。接下来,使用`confusion_matrix`函数计算混淆矩阵,并将结果存储在变量`cm`中。最后,使用Matplotlib库绘制混淆矩阵,并在每个格子中显示对应的数值。