confusion matrix of KNN画图举例
时间: 2023-07-13 19:36:11 浏览: 209
下面是一个KNN算法的混淆矩阵的例子,以及如何用Python的Matplotlib库绘制混淆矩阵。
假设我们使用KNN算法对一组数据进行分类,其中正样本有70个,负样本有30个。我们将数据集分为训练集和测试集,其中测试集共有20个样本。KNN算法将测试集中的样本分为正样本或负样本,我们可以使用混淆矩阵来评估算法的性能。
| | 预测为正样本 | 预测为负样本 |
| --- | --- | --- |
| 实际为正样本 | 15 | 5 |
| 实际为负样本 | 2 | 8 |
上表是KNN算法的混淆矩阵,其中15个正样本被正确预测,5个正样本被错误预测为负样本,2个负样本被错误预测为正样本,8个负样本被正确预测。我们可以使用混淆矩阵来计算算法的准确率、召回率、F1值等指标。
接下来,我们可以使用Python的Matplotlib库来绘制混淆矩阵。下面是一个示例代码:
```
import matplotlib.pyplot as plt
import numpy as np
# 设置混淆矩阵
confusion_matrix = np.array([[15, 5], [2, 8]])
# 绘制混淆矩阵
fig, ax = plt.subplots()
ax.imshow(confusion_matrix, cmap=plt.cm.Blues)
# 添加标题和轴标签
ax.set_title('Confusion Matrix of KNN')
ax.set_xlabel('Predicted Labels')
ax.set_ylabel('True Labels')
# 添加刻度标签
tick_marks = np.arange(len(['Positive', 'Negative']))
ax.set_xticks(tick_marks)
ax.set_xticklabels(['Positive', 'Negative'])
ax.set_yticks(tick_marks)
ax.set_yticklabels(['Positive', 'Negative'])
# 添加文本标签
thresh = confusion_matrix.max() / 2.
for i, j in ((i, j) for i in range(2) for j in range(2)):
ax.text(j, i, confusion_matrix[i, j],
ha="center", va="center", color="white" if confusion_matrix[i, j] > thresh else "black")
# 显示图像
plt.show()
```
运行以上代码,我们将得到一个类似于下面的混淆矩阵图:
![KNN Confusion Matrix](https://i.imgur.com/5jYkGjJ.png)
该图使用蓝色的色阶表示混淆矩阵中的值,深色表示更高的值。我们可以看到,正确预测的正样本和负样本都比错误预测的多,KNN算法的性能较好。
阅读全文