knn一种分类算法,有监督学习,注意与K-means的不同,K-means为无监督学习。
从KNN名字,k个最近的邻居:k取值能够决定这个中心元素属于哪个类别。
假设,预测x为哪个类别,选取一个k值,则x附近k个元素为什么类别,那么,x就为此类别。
假设,k为3:
从图中能够看出,绿色方块属于三角形类别,因为在方块最近的范围内的三个元素,三角形权重最大。
即:
假设k为5:
从图中看出,三角形为2个,圆为三个,圆占的权重大,因此,方块的类别应该属于圆。
简单结论:不同的k选取,待分类的元素被分类的结果也会不一样。
从上得出,需要解决的问题有k的选取,距离的计算。
算法大概过程:
1.计算每个数据到待预测数据的欧式距离(也可以是其他距离)
2.对距离进行升序排序
3.选取前k个
4.加权平均(距离中心数据越近的权值相对应该更大)
注意的地方:k太大,分类模糊
k太小,受个例影响