前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K近邻(KNN)

K近邻(KNN)

作者头像
用户2909867
发布2018-08-22 11:10:04
7790
发布2018-08-22 11:10:04
举报
文章被收录于专栏:互联网大杂烩互联网大杂烩

KNN概念

kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。 kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。

该算法涉及3个主要因素:训练集、距离与相似的衡量、k的大小;

算法步骤:

算法步骤:

step.1---初始化距离为最大值

step.2---计算未知样本和每个训练样本的距离dist

step.3---得到目前K个最临近样本中的最大距离maxdist

step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本

step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完

step.6---统计K-最近邻样本中每个类标号出现的次数

step.7---选择出现频率最大的类标号作为未知样本的类标号

KNN的实现

选用“鸢尾”数据集来实现KNN算法

代码语言:javascript
复制
#从sklearn.datasets导入iris导入数据
from sklearn.datasets import load_iris
#使用加载器i读取数据并且存入变量中
iris=load_iris()
#查看数据规模
print(iris.data.shape)
#查看数据说明
print(iris.DESCR)
#数据分割25%用于测试
#导入 train_test_split用于数据分割
from sklearn.cross_validation import train_test_split
#从使用train_test_split,利用随机种子random_state采样25%的数据作为测试集
X_train,X_test,Y_train,Y_test=train_test_split(iris.data,iris.target,test_size=0.25,random_state=33)
from sklearn.preprocessing import StandardScaler
from  sklearn.neighbors import KNeighborsClassifier
#对数据进行标准化处理
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
#使用K近邻分类器对测试数据进行类别预测,预测结果储存在变量y_predict中
knc=KNeighborsClassifier()
knc.fit(X_train,Y_train)
y_predict=knc.predict(X_test)
#使用模型自带的评估函数进行准确性评测
print('The accuracy of K-nearest Neighbor Classifier is ',knc.score(X_test,Y_test))
#对预测结果进行分析
from sklearn.metrics import classification_report
print(classification_report(Y_test,y_predict,target_names=iris.target_names))

数据说明如下:

鸢尾数据说明

结果如下:

预测性能评估

注:部分资料参考自范淼 李超《Python机器学习及实践》清华大学出版社 ,感谢!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.03.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • KNN概念
  • 算法步骤:
  • KNN的实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档