算法基础 |【01】K-近邻算法

文章目录

      • 概念
      • API的使用
      • 距离度量
      • K值的选择
          • k值的影响
          • 误差
      • kd树
          • 概念
          • 使用方法
      • 总结
          • 优点
          • 缺点

概念

在一个样本空间中的k个最相似(特征空间中最近邻)的样本中的大多数属于某一个类别

API的使用

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

参数:n_neighbors:默认为5

距离度量

1、欧式距离

即高中所学的俩点之间的距离公式

算法基础 |【01】K-近邻算法_第1张图片
2、曼哈顿距离

用以标明两个点在标准坐标系上的绝对轴距总和

算法基础 |【01】K-近邻算法_第2张图片
3、切比雪夫距离

是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。类似于人走格子,直行、横行、斜行

算法基础 |【01】K-近邻算法_第3张图片
4、闵可夫斯基距离

缺点:将各个分量的单位都相同看待,未考虑各个分量的分布(方差…)可能是不同的

算法基础 |【01】K-近邻算法_第4张图片
5、标准化欧式距离

对数值进行标准化
算法基础 |【01】K-近邻算法_第5张图片

6、余弦距离

高中所学的余弦定理

算法基础 |【01】K-近邻算法_第6张图片
7、汉名距离

字符串替换所做的最小替换次数

8、杰卡德距离
算法基础 |【01】K-近邻算法_第7张图片

K值的选择

k值的影响

过小易受异常点影响 整体模型变得复杂, 容易过拟合
过大受到样本均衡问题 模型变简单

误差

近似误差过拟合 在训练集表现好,而测试集中表现不佳
估计误差:误差小,说明对未知数据的预测能力好,模型接近最佳

kd树

概念

原理:若A和B很远,B和C很近,则A和C也很远;对值进行排序,然后切割,分区域

算法基础 |【01】K-近邻算法_第8张图片

使用方法

构建树 - 最近邻搜索

eg: list = {(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)} 
#### 选择x、y轴哪个方差大,就对哪个先切割
###  选择一个根节点
【1】构建树
	第一次:可知x轴的方差较大
		x轴 -- 2,5,9,4,8,7 --> 2,4,5,7,8,9
		y轴 -- 3,4,6,7,1,2 --> 1,2,3,4,6,7
		则选择x轴,找中间点【(5,4)或(7,2)】任意一个都可以
	第二次:选择(7,2)
		左边:(2,3),(4,7),(5,4) --> 3,4,7
		右边:(8,1),(9,6) --> 1, 6
		左边选(5,4),右边选(9,6)
	按步选择	...

总结

优点
  • 简单有效
  • 重新训练代价低
  • 适合类域交叉样本
  • 适合大样本自动分类
缺点
  • 惰性学习
  • 类别评分不是规格化
  • 输出可解释性不强
  • 对不均衡的样本不擅长:收集到的数据每个占比严重失衡
  • 计算量较大

你可能感兴趣的:(算法,算法,机器学习,人工智能,python)