怎么实现一个KNN算法
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,怎么实现一个KNN算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。教你如何自己实现KNN算法KNN算法,也称为K邻近算
千家信息网最后更新 2025年01月31日怎么实现一个KNN算法
怎么实现一个KNN算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
教你如何自己实现KNN算法
KNN算法,也称为K邻近算法,可以解决回归和分类问题,但解决分类问题才是它的优势。
KNN算法的本质就是寻找与我们提供的数据相似的k个样本,然后判断这k个样本的标签,最后统计每个标签出现的次数,次数最多的标签,就会被当作我们提供的数据的标签。
先说说工作流程:
机器学习是基于数据的,所以要先将实物转换为向量、矩阵或张量的形式
通过欧式距离计算出测试样本与其他样本之间的距离
将距离按照小到大排序,并取前K个值
判断前K个值相应的标签,并进行统计
统计最多的标签即为预测结果
现在我们来动手实现一下
先导入所有需要导入的库或模块
# 导入sklearn自带的数据集from sklearn import datasets# 导入计数器,用于统计标签出现的次数from collections import Counter# 用于分割数据集from sklearn.model_selection import train_test_split# 用于计算欧式距离import numpy as np
其次,导入iris数据集,存储样本特征和标签
data = datasets.load_iris()# 将样本特征存储到XX = data['data']# 将样本标签存储到YY = data['target']
然后为了后期评估模型,这里将数据集分为训练集和测试集
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,random_state=2000)
设置random_state为固定值,这样每次的运行结果就会一样,帮助我们判断过程出现的bug
再次,写一个计算距离的函数eus_dis
def eus_dis(instance1, instance2): '''计算两个样本之间的距离 instance1:array型 instance2:array型 ''' distance = np.sqrt(sum((instance1-instance2)**2)) return distance
接着,真正的开始实现KNN算法
def KnnClassify(X,Y,test,k): '''实现KNN算法 X:特征训练集-->array型 Y:标签训练集-->array型 test:特征测试集-->array型 k:邻近值-->int ''' # 计算样本之间的距离 distances = [eus_dis(x, test) for x in X] # 按照从小到大排序,并取前K个值,返回下标 kneighbors = np.argsort(distances)[:k] # 统计每个标签出现的次数 count = Counter(Y[kneighbors]) # 返回出现次数最多的标签 return count.most_common()[0][0]
最后我们来进行测试,观察其准确率
# 存储模型对特征测试集的预测结果predirect = [KnnClassify(X_train,Y_train,test,5) for test in X_test]# 计算预测结果与实际结果相等的个数count = np.count_nonzero((predirect==Y_test)==True)print("该模型的预测准确率为:%.3f" % (count/len(X_test)))
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
标签
样本
算法
数据
次数
特征
结果
测试
统计
存储
之间
模型
帮助
训练
准确率
问题
分类
学习
排序
清楚
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
房价数据库哪个好
如何连接服务器ip
qq邮箱的服务器该怎样填
数据库操作英文dml
浙江服务器厂家直供虚拟主机
服务器安全芯片
网络安全法律法规综述论文
中职语文教学和网络安全
国金证券软件开发加班
飞信 服务器未响应
如何使两个数据库同步
未央区网络安全防护
数据库统计功能是什么功能
网络安全法法律知识
公司举办软件开发类培训
数据库理论概述笔记
王牌战争不拆家的服务器
国泰安数据库免费试用
小程序服务器配置指南
服务器维护和更新的区别
服务器通道管理系统
公安网网络安全检查的稿件
gis软件开发 是什么
亚马逊无货源软件开发
宝塔怎么看云服务器ip地址
校招数据库常见面试题
笔记本变服务器
阿里云 多台服务器
组合办公软件开发
嘉定租房软件开发