原理介绍:首先存在一组训练样本集,而且每个样本都对应一个标签 ,即知道每一个样本所属的类别。输入预测数据,计算预测数据与每个样本的欧氏距离当作其相似性度量,然后提取前K个距离最小的数据,选择K个最相似数据中出现次数最多的分类,作为预测数据的分类,通常k是不大于20的整数。
- 优点:精度高,对异常值不敏感
- 缺点:计算复杂度高、空间复杂度高频
基本步骤如下:
- 计算欧式距离
- 索引排序
- 创建字典
- 字典排序
K-nearst-neighbor:
- 计算已知类别数据集中的点与当前点之间的距离;
- 按照距离升序排列;
- 选取与当前点距离最小的前K个点;
- 确定前K个点所在类别的出现频率;
- 返回前K个点出现频率最高的类别作为当前点的预测分类。
1、 新建名为KNN.py的模块,用来生成训练数据集和样本标签:
import numpy as np
def createDateSet():
group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group,labels
2、新建名为KNN-classifier模块,用于预测