直观展示KNN算法执行过程
时间: 2023-07-26 20:27:57 浏览: 45
KNN算法的执行过程可以通过可视化的方式进行展示,以更加直观地了解算法的分类效果。下面我将介绍一种基于Python的KNN算法可视化方法,希望可以帮助你理解KNN算法的执行过程。
1. 加载数据集:首先需要将训练集和测试集加载到内存中,可以使用numpy库来处理数据集。
2. 数据预处理:对数据进行归一化处理,使得各特征值处于相同的数值范围内,避免某些特征对距离计算产生影响。
3. 计算距离:根据数据集中样本的特征值,计算测试样本与每个训练样本之间的距离。
4. 选择k个近邻:选出与测试样本距离最近的k个训练样本,一般使用欧式距离或曼哈顿距离进行距离计算。
5. 标签统计:统计k个近邻中每个类别出现的次数,选出出现次数最多的类别作为测试样本的类别。
6. 可视化展示:将数据集和分类边界可视化展示,以便直观了解KNN算法的执行过程。
下面是一个简单的KNN算法可视化示例代码:
``` python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
# 加载数据集
def load_dataset():
dataset = np.array([[2.0, 3.0], [3.0, 1.0], [4.0, 2.0], [5.0, 3.0], [6.0, 4.0], [7.0, 5.0], [8.0, 6.0],
[9.0, 7.0], [10.0, 8.0], [11.0, 9.0], [12.0, 10.0], [13.0, 11.0], [14.0, 12.0], [15.0, 13.0]])
labels = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3])
return dataset, labels
# 数据预处理
def normalize(dataset):
min_vals = dataset.min(axis=0)
max_vals = dataset.max(axis=0)
ranges = max_vals - min_vals
norm_dataset = (dataset - min_vals) / ranges
return norm_dataset
# 可视化展示
def visualize(dataset, labels, knn, k):
x_min, x_max = dataset[:, 0].min() - 0.1, dataset[:, 0].max() + 0.1
y_min, y_max = dataset[:, 1].min() - 0.1, dataset[:, 1].max() + 0.1
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100))
Z = knn.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(figsize=(8, 6))
plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.5)
plt.scatter(dataset[:, 0], dataset[:, 1], c=labels, cmap=plt.cm.Spectral)
plt.title("KNN (k = %d)" % k)
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
if __name__ == '__main__':
# 加载数据集
dataset, labels = load_dataset()
# 数据预处理
norm_dataset = normalize(dataset)
# 训练KNN模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(norm_dataset, labels)
# 可视化展示
visualize(norm_dataset, labels, knn, 3)
```
在这个示例中,我们首先生成了一个二维数据集,并对数据集进行了归一化处理。然后,使用sklearn库的KNeighborsClassifier类训练了一个KNN模型,并将K值设置为3。最后,使用可视化方法展示了数据集和分类边界,其中不同颜色的散点表示不同的类别,背景颜色表示分类边界。
这个简单的示例展示了KNN算法的执行过程,并且通过可视化的方式帮助我们直观地了解算法的分类效果。在实际应用中,我们可以使用更加复杂的数据集和可视化方法来进一步研究和优化KNN算法。