k近邻分类模型:无参数,计算每个对每个训练样本采取遍历的方法与测试样本逐一计算相似度、排序并且选择K个临近训练样本的标记进而做出分类决策。
比如说20个西瓜,拿出3个做训练样本。从另外17个测试样本西瓜中选择一个标记点,从这个标记点向外第一次取5个算上标记值就是六个如果这个六个其中4个西瓜和训练样本中的A西瓜更像,就做一次总结,以此类推。也就是说这个分类方法会逐渐的缩小类别范围,尽可能的分类到最小的那个标记点范围K值之内。
K近邻分类器在对鸢尾花(iris)数据上的类别预测:
# -*- coding: UTF-8 -*-
#从sklearn.datasets 里面导入iris的数据加载器
from sklearn.datasets import load_iris
#使用数据加载器读取数据并且存入变量iris
iris=load_iris()
#查验数据规模
iris.data.shape
#查看数据说明。
print iris.DESCR
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.25,random_state=33)
print X_train,',,,,',X_test
print '—--------'
print y_train,',,,,',y_test
#从sklearn.preprocessing里面导入数据标准化模块
from sklearn.preprocessing import StandardScaler
#从sklearn.neighbors里面导入
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)
#对K近邻分类器在鸢尾花数据上的 预测性能进行评估
#使用模型自带的评估函数进行准确性评估
print 'The accuracy of K-Nearest Neighbors Classifier is:\
',knc.score(X_test,y_test)
#依然使用sklearn.metrics里面的classification_report模块对预测结果做更加详细的分析
from sklearn.metrics import classification_report
print classification_report(y_test,y_predict,target_names=iris.target_names)
鸣谢《机器学习及实战》编者范淼、李超等