‘’我像谁我就是谁‘’,对于像谁,所做的就是距离的问题。
这个红色的点,所占的假设K=7。那么KNN算法就会找到与它距离最近的七个点(这里用圆圈把它圈起来了),看看哪种类别多一些,绿色占比多则它属于绿色一类。
所以knn算法集中在两个点,K值的选取和点距离的计算。
回想一下高中的距离公式:
欧式距离计算公式:
这个是点到点之间的距离(很熟悉吧)
在多维空间的实现就是:
累加的过程
知道了原理,开始写一个KNN类。
KNN代码实现
利用交叉验证测其准确率
选取鸢尾花数据集
归一化:把所有特征数据归一化到同一量程范围,去量纲
最值归一化->统一到0-1之间
均值方差归一化->统一到标准正态分布
选取超参数:
比如:KNN中的k 选小了,会怎麽样?容易过拟合 选大了,会怎么样?容易欠拟合
所以K:平方根,尽可能小,但又不能太小!
最后的结果: