模式识别(五):K近邻分类器(KNN)

 

本系列文章由孙旭编辑,转载请注明出处

http://blog.csdn.net/longyindiyi/article/details/20068781

多谢合作!

 

今天介绍模式识别中另外一种经典的分类器算法—— K近邻分类器(K-nearest neighbor,KNN)。

 

俗话说:“物以类聚,人以群分”。KNN 就是利用了这样一种思想发展起来的分类器。

关于 KNN 分类器,首先,它是一种基于距离的分类器,其次,它也是一种“懒人”分类方法(不需要训练)。

从方法论角度出发, KNN 认为,待分类对象的类别可以通过在它附近的训练数据的类别来确定,所以采取的策略就是找到离待分类对象最近的 K 个邻居进行分析。

在 KNN 的设计过程中,有四个要点需要注意:

 

  1.  用来对待分类对象所属类别进行评估的数据集合(不一定需要用到整个训练集);
  2.  用来计算对象之间相似度的距离或者相似度矩阵(比如,欧式距离,马氏距离等);
  3.  K 值的选取;
  4.  用来确定待分类对象所属类别的方法(比如,距离加权与否)。

 

KNN 分类器的算法描述如下所示:

 上图取自《The top ten algorithms in data mining》

上述算法描述中确定其最终分类判别的公式可以根据实际需要稍作调整。

实际中也有可能出现由不同类别算出的相似度相同的情况,这个时候可以采取随机决策,或者给训练集中数量占优的那一类(以贝叶斯观点来看,就是在似然函数相同情况下,采信先验概率较大的那一类)。

这类算法的优点就是简单,可以绕过训练阶段,但是在训练数据集数量比较大时,会加剧识别过程的时间开销。

 

 

 

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k近邻分类器(k-nearest neighbors classifier)是一种常用的模式识别算法,可以用于分类任务。在iris数据集中,我们可以使用k近邻分类器来对鸢尾花进行分类。 k近邻分类器的基本思想是通过计算待分类样本与训练集中各个样本之间的距离,并选择距离最近的k个样本作为邻居,然后根据这些邻居的标签来预测待分类样本的标签。常见的距离度量方法包括欧氏距离、曼哈顿距离等。 对于iris数据集,我们可以将其分为训练集和测试集,使用训练集来训练k近邻分类器,并使用测试集来评估分类器的性能。首先,需要导入iris数据集,并将其分为特征集和标签集。然后,我们可以使用训练集来拟合k近邻分类器,并使用测试集来评估其准确性。 下面是使用Python中的scikit-learn库实现k近邻分类器对iris数据集进行分类的示例代码: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 导入iris数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建k近邻分类器并拟合训练集 knn = KNeighborsClassifier(n_neighbors=3) # 设置邻居数量为3 knn.fit(X_train, y_train) # 在测试集上进行预测 y_pred = knn.predict(X_test) # 输出分类器在测试集上的准确性 accuracy = knn.score(X_test, y_test) print("Accuracy:", accuracy) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值