KNN(最近邻分类) 它是数据挖掘算法中 可以说是最简单的一种算法了,所谓近邻,乃是以K个最近的邻居代表某个样本。
KNN算法的核心思想是,样本在特征空间中的K个邻居大多属于一个类别,则该样本也属于该类别,并具有该类别的样本特性。KNN算法在分类决策中只依据样本的一个或多个邻近值来决定待测样本的类别。
由于KNN算法的分类决策只和极少量的样本有关,它不同于靠区间域分类。所以在处理 区间域交叉重叠较多的待分类样本时,KNN算法有更好的效果。
K是 数据集待测样本周围 近邻个数,由近邻样本中的不同类别投票。(例如: 待测样本a,K= 5,即把a 放入模型中 取它周围的5个点,假如5个点分别有3个A ,2个B,则 a 会被分到A一类)。
但是在实际分类时 K的值是需要自己设定的。于是选一个合适的K值,才能让KNN算法发挥最大价值。可以通过多次不同的K值进行分类,最终选取分类误差率最小的K值作为分类器的K值。
算法中计算待测样本以K个近邻的距离使用的欧式距离(最短的直线距离),因此KNN算法中的变量值为数值型变量,由于是计算距离,故,对于量纲不同的变量要进行数据标准化。
现在来看看KNN的优缺点:advantage(简单有效对数据分布没有要求,训练阶段很快,在多分类问题上有很好效果)
disadvantage(没有模型,很难观察不同特征间的相关性,分类阶段 慢需要大量内存,名义性变量和缺失值要处理,不适合数据量太大)
下面讲KNN在R中的实现(K 一般可以取样本的开方)
R的class包提供了knn算法---test_pred <- knn(train,test,train_label,k= )
对于分类结果可以用gmodels包的CrossTable查看分类效果 或者直接table
R————KNN
最新推荐文章于 2024-04-01 22:16:08 发布