[R][源码]KNN算法

本文详细介绍了KNN(K最近邻)算法的基本思想和实现步骤,通过R语言进行实际操作,包括数据生成、距离矩阵计算、算法实现以及使用R的class包中的knn和knn1函数进行对比。实验表明,改变k值会影响算法的正确率,最佳k值为7,当k=11时正确率降低。
摘要由CSDN通过智能技术生成

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个数据,错分数目:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值