K-近邻算法(kNN)是分类数据最简单有效的算法,它的工作原理是:将样本数据集合(训练样本集)的特征向量和标签进行存储,需要存储全部的数据集,当输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,一般选用最小距离方式,然后提取与样本集中特征最相似数据的分类标签,作为新数据的标签。
一般来说,只选择样本数据集中前k个最相似的特征,这就是k-近邻算法,一般k是不大于20的整数,通常可选择k=3,k=5,k=10,k的不同取值会影响分类,k值越小,容易发生过拟合,k值过大,整体的模型变得简单。可利用交叉验证法来选取最优的k值。
K-近邻算法对训练数据集只进行归一化处理,处理完成后进行存储,不会进行其他处理,在新数据计算相似程度时,需要每次都与所有的训练数据集进行匹配,因此会产生很大的计算量,程序运行相对较慢。
《机器学习实践》内程序问题:
P23,
ax.scatter(datingDataMat[:,1],datingDataMat[:,2]),15.0*array(datingLabels),15.0*ar