算法原理介绍
1. 算法描述
2. KNN 的三要素
(1)k 值得选择
(2)距离度量
(3)分类决策规则
KNN 算法的分类决策规则一般是多数表决,即由输入实例的k个邻近的训练实例中的多数类决定输入实例的类。
KNN 算法的实现与测试
1. KNN 分类器的实现
1 | import numpy as np |
2. 使用sklearn自带的红酒数据集对KNN进行测试
导包
1 | from knn import KnnClassifier |
探索数据,并划分训练集和测试集
1 | data = datasets.load_wine() |
简单测试KNN
1 | knn = KnnClassifier(k=5) |
对k的不同取值进行测试
1 | accs = [] |
当前数据集,当 k=1 时,取得最高准确率。
对sklearn自带的KNN分类器进行测试
接口
导包
1 | from sklearn.model_selection import cross_val_score, GridSearchCV |
使用交叉验证和网格搜索测试
1 | param_grid = {'n_neighbors': np.arange(1, 10)} |
KNN 的优缺点
KNN 实现简单,是一个判别式、非线性模型,适合在低维度空间中使用,当训练样本大且向量维度高时,计算量非常大,所以需要对大数据量进行一定的处理,此时需要继续学习 kd tree
。
参考
- 《统计学习方法》
- 木东居士公众号:KNN
- 机器学习-KNN算法