KNN是通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。
如下图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。
https://www.cnblogs.com/ybjourney/p/4702562.html
matlab自带knnclssify
https://blog.csdn.net/boyxiaolong/article/details/7062394
matlab中的knnsearch函数
https://blog.csdn.net/qq_33596242/article/details/83689898
ClassificationKNN
https://www.mathworks.com/help/stats/classificationknn.html
ClassificationKNN.fit
mdl = ClassificationKNN.fit(X,Y):基于特征和分类标签返回分类模型。X:每行表示一个特征向量,每列表示特征向量中一个变量。Y:每行代表的是X中特征向量说代表的标签或种类。
mdl = ClassificationKNN.fit(X,Y,Name,Value):value代表K的值
预测过程:1,寻找训练集合X中最靠近Xnew 的K个点(距离的度量采用的欧式距离)
2,记录这K个点的对应标签Y
3,把Xnew的标签分配给所有K个标签中概率最大的那一个。
http://www.voidcn.com/article/p-ctglrhch-zb.html
K值是经验值,不同样本构建的模型K值几乎都不同,遇的较多的好像是设置成5。
https://www.tensorflowers.cn/t/484