knn算法(最近邻算法)是一种用于分类和回归的非参数统计方法。
knn算法的核心思想是“近朱者赤,近墨者黑”,本实验用knn算法实现了分类(某种意义上的聚类,如下图)。
一、 算法描述:
假设共有N个数据点,度量任意两个数据点之间的距离,构成N*N距离矩阵。
数据划分为训练集和测试集,训练集数据标号已知,测试集数据标号未知。
对测试集中任一数据点,由距离矩阵求出训练集中(邻居取自已经正确分类的对象)与其最近的k个数据点(不含自身),将其归为类标号最多的那一类。
二、 数据
数据共1000个,由EM算法实验(详见gmm2dim.R)中设定的2个二维混合高斯分布生成。将这些数据看作2个cluster,cluster1的数据标号为0, cluster2的数据标号为1,由ggplot2()函数绘制如下:
三、 实验过程、结果与分析
3.1 我的算法
将初始数据集的前1-600个数据作为训练集,数据的标号已知。将后400个数据作为测试集,用knn算法求其标号,并与原先的标号进行比较,分别统计正确率、错分数目、错分数据的编号。
正确率:
测试集中有400个数据,错分数目: