原理:采用测量不同特征值之间的距离进行分类.
计算复杂度:n*n
优点:精度高,对异常值不敏感,五数据输入假定.简单.
缺点:计算复杂度高,空间复杂度高.
适用数据范围:数值型和标称型
标称型:一般在有限的数据中取,而且只存在‘是’和‘否’两种不同的结果(一般用于分类)
数值型:可以在无限的数据中取,而且数值比较具体化,例如4.02,6.23这种值(一般用于回归分析)
使用步骤:
假设数据处理已经做了.相关数据格式和内容都统一,没有异常.
1.准备数据:读取数据集,构建特征矩阵.
2.分析数据:使用Matplotlib 画二维或三维扩散图,观察训练数据的分类是否正常,同类数据是否聚类情况良好.
3.数据归一化:对训练数据集进行归一化处理.
4.测试算法,根据欧式距离原理,选择训练集中10%的数据作为测试数据,记录结果与实际值的差异,计算错误率.
5.使用算法,
相关概念:
数据归一化:消除计算欧式距离时,因各个指标中自然属性差异巨大,而导致的结果偏差.如下表中2组数据:
玩游戏所占时间百分比 | 每年飞行旅程数 | 每周消费冰淇淋公升数 | 样本分类 | |
1 | 0 | 20000 | 1.1 | 2 |
2 | 67 | 32000 | 0.1 | 3 |
计算距离:
可以看出,若不对数据做归一化处理,结果将波动很大.,难以用来描述样本间的距离.所以我们需要对数据做归一化处理.即将任何数值都转化到0~1 或 -1~1之间.下列函数可将值归一化到0~1之间.