怎么实现一个KNN算法
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,怎么实现一个KNN算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。教你如何自己实现KNN算法KNN算法,也称为K邻近算
千家信息网最后更新 2024年11月27日怎么实现一个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安全错误
数据库的锁怎样保障安全
数据库中$表示什么
成都安卓软件开发费用是多少
美国网络安全在哪里
文山计算机网络技术专业培训学校
服务器管理英语
江苏软件开发解决方案报价
汽车电子总线网络技术
数据库搜索用什么语言
现代软件开发技术
货车帮网络安全审核是什么
云服务器数据库密码忘记
山西省电信dns服务器云空间
安卓怎么查看服务器列表
瑞景软件开发公司
阿里背景的网络安全公司
数据库聚合函数语句
四川交通施工其余数据库
数据库sno
数据库 空间
敏捷软件开发java
成都安卓软件开发费用是多少
阿里云服务器 按量
组态王数据库对应数据类型
中兴r5300服务器功率
cad卡死如何保存数据库
泰拉瑞亚FHTX服务器
指纹机怎么清理之前的数据库
天讯互联网科技有限公司
网络安全威胁及表现形式
会计网络安全