R语言 K-NN分类器
K-近邻或K-NN是一种监督的非线性分类算法。K-NN是一种非参数算法,即它不对基础数据或其分布做任何假设。它是一种最简单和广泛使用的算法,取决于它的K值(邻居),并在许多行业如金融业、医疗保健业等发现其应用。
理论
在KNN算法中,K指定了邻居的数量,其算法如下。
- 选择邻居的数量K。
- 根据距离选择未知数据点的K个最近的邻居。
- 在这K个邻居中,计算每个类别中的数据点的数量。
- 将新的数据点分配到你所计算的邻居最多的类别中。
对于最近的邻居分类器,两点之间的距离以 欧氏距离 的形式表示。
例子:
考虑一个包含红色和蓝色两个特征的数据集,我们对它们进行分类。这里K是5,即我们根据欧氏距离考虑5个邻居。
因此,当一个新的数据点进入时,在5个邻居中,3个是蓝色,2个是红色。我们将新的数据点分配给拥有最多邻居的类别,即蓝色。
数据集
鸢尾花 数据集由3种鸢尾花(Iris setosa, Iris virginica, Iris versicolor)各50个样本组成,是英国统计学家和生物学家Ronald Fisher在其1936年的论文《分类学问题中多重测量的使用》中介绍的多变量数据集。从每个样本中测量了四个特征,即萼片和花瓣的长度和宽度,根据这四个特征的组合,Fisher开发了一个线性判别模型来区分物种。
在数据集上执行K近邻算法
在包括11个人和6个变量或属性的数据集上使用K-Nearest Neighbor算法。
输出
- 模型分类器_knn(k=1)。
用训练、测试和k值拟合KNN模型。同时,分类器物种特征也被装入模型。
- 混淆矩阵。
因此,20个Setosa被正确归类为Setosa。在20个Versicolor中,17个Versicolor被正确归类为Versicolor,3个被归类为virginica。在20个Virginica中,17个Virginica被正确分类为Virginica,3个被分类为Versicolor。
- 模型评估:
(k=1)
在k为1的情况下,该模型达到90%的准确率。
(K=3)
当k为3时,该模型达到了88.33%的准确率,低于k为1时的准确率。
(K=5)
在k为5的情况下,该模型达到了91.66%的准确率,比k为1和3的情况下要高。
(K=7)
该模型在k为7时达到了93.33%的准确率,这比k为1、3和5时的准确率要高。
(K=15)
该模型在k为15时达到了95%的准确率,比k为1、3、5和7时要高。
(K=19)
该模型在k为19时达到了95%的准确率,这比k为1、3、5和7时的准确率要高。当k为15时,其准确率相同,这意味着现在增加k值并不影响准确率。
因此,K最近的邻居在行业中被广泛使用。