首页 / 算法 / 机器学习——KNN算法
机器学习——KNN算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了机器学习——KNN算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1998字,纯文字阅读大概需要3分钟。
内容图文
近邻算法(KNN)属于有监督学习的聚类算法,他可以通过测量不同特征值之间的距离进行分类,一个样本在特征空间中的k个最相似的样本大多数属于某一个类别,则该样本也属于这个类别,算法中所选择的邻居都是正确分类的对象。KNN算法测距离依旧使用的是欧式距离。
算法描述:
计算测试数据与各个训练数据之间的距离;
按照距离的递增关系进行排序;
选取距离最小的K个点;
确定前K个点所在的类别的出现频率;
返回前K个点出现频率最高的类别作为测试数据的预测分类。
Python中的实现
以鸢尾花为例
import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris if __name__ == '__main__': datas=load_iris() print(datas) #准备一个乱数的下标序列号 index=np.arange(150) np.random.shuffle(index) #根据给定的乱序的下标到对应的数组中提取对应的数据 train,test=datas.data[index[:100]],datas.data[index[100:]] #训练集和测试集 train_target,real_target=datas.target[index[:100]],datas.target[index[100:]] #训练模型 knn=KNeighborsClassifier(n_neighbors=5) knn.fit(train,train_target) #模型评估 res=knn.predict(test) print(res) print('-------------------') print(real_target) print('--------------') print(1-abs(res-real_target).sum()/len(res))
通过对比预测值res和实际值,可以得到准确度为:0.98
而K值是自己定的,而不能确定是否是最优的情况,可以使用matplotlib进行作图调优,给定K的范围为(1,33)
import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris from sklearn.model_selection import cross_val_score import matplotlib import matplotlib.pyplot as plt if __name__ == '__main__': matplotlib.rcParams['font.sans-serif'] = ['SimHei'] datas=load_iris() train,target=datas.data,datas.target neigh=np.arange(1,33) y=[] for i in neigh: knn=KNeighborsClassifier(n_neighbors=i) #cross_val_score 交叉验证模型 提高精确度 ms=cross_val_score(knn,train,target,cv=10,scoring='accuracy').mean() #平均值 y.append(ms) plt.plot(neigh,y,'r') for x1,y1 in zip(neigh,y): plt.text(x1,y1,str(x1),ha='center',va='bottom',fontsize=12,rotation=0) plt.show()
得到一个精确度的折线图如下,由图选取最佳的K值再参与计算,提高KNN算法的准确性。
内容总结
以上是互联网集市为您收集整理的机器学习——KNN算法全部内容,希望文章能够帮你解决机器学习——KNN算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。