怎么实现一个KNN算法
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,怎么实现一个KNN算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。教你如何自己实现KNN算法KNN算法,也称为K邻近算
千家信息网最后更新 2025年12月01日怎么实现一个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安全错误
数据库的锁怎样保障安全
虚拟主机 独立服务器
密码明文放在数据库安全吗
acme服务器证书
南宁网络安全宣传周宣传主题
中国电信怎么保证服务器的安全
中移物联智慧网络技术中心
乃心虎网络技术有限公司
网络安全管理意识低
崂山区商城软件开发推荐
公司网络安全风险管理由谁制定
数据库与软件开发导论
广州软件开发地点
数据库建好怎么连接php
ice服务器和ec有什么关系
sql数据库实例属性无法显示
西安网络安全专业大学
为什么数据库附加文件附加不了
虎眼科技软件开发平台
a6管理软件后无法连接服务器
Java软件开发工程师发展前景
怎么取消数据库的关联
重庆的互联网科技
进入服务器密码怎么输入
连云港推广软件开发代理商
怎么查看服务器数据库日志
电信数据库在哪里
网络安全有什么好的理由
数据库建好怎么连接php
制作可查询的数据库
服务器老化出故障导致业务停滞