首页 > 编程知识 正文

knn算法的实际应用,knn最近邻算法

时间:2023-05-03 23:11:30 阅读:51325 作者:3984

1 .什么是最近邻规则KNN分类算法? 2.KNN算法代码的实现步骤? 3 .算法的优点4 .算法的缺点5 .算法的改进1 .最近邻规则计算什么是KNN分类算法未知标签的样本点与所有训练集中已知标签的样本点之间的距离。 选择k个最近的样本点,基于标签类别个数“少数服从多数”的原则,将未知标签样本点分为k个最近训练集中样本点中个数最多的类别。

2.KNN算法代码实现步骤1 .打开文件,读取数据,赋值。 导入数据后,将训练集和测试集随机分割。

load dataset (文件名、剥离、trainingset=[]、testset=[] ) )

2.2计算两点之间的dpdsmt距离

欧盟距离(实例1,实例2,长度) )。

3 .做最近的k人邻居

获取neighbors (培训集,测试样本,k ) )。

4 .基于“少数服从多数”原则返回未知样本点所属的类别

获取响应(neighbors ) )。

5 .计算算法精度

获取访问(测试集,保护) )。

6 .预测

7 .主函数

代码实现此代码的环境:

执行平台: Windows

Python版本: Python3.x

IDE: PyCharm

# coding : utf-8 importcsvimportrandomimportmathimportoperatordefloaddataset (文件名称、剥离、trainingset=[] ), testset 'rt ' ) ascs vfile : lines=CSV.reader (CSV file ) dataset=list (lines ) print ) ) totaldataset3360'repr ) lint t[x][y]=float ) dataset [ x ] [ y ] ifrandom.random (split 3360 trainingset.) ) split 3360 else : testset.appent 实例2,length ) : distance=0foriinrange (length ) : distance=pow ((实例1 [ I ] -实例2 [ I ] ), 2 )返回(math.sqrt )距离) ) defgetneighbors ) trainingset,testsample, k ) :距离=[ ] forxinrange (len (trainingset ) ) :距离=euclidean distance (x ) trainingset(x ), 测试范例len (测试范例(-1 ) distances.append ) ) (trainingset[x], distance () distances.sort (key=operator.item getter (1) ) neighbors=[] for x in range(k ) k ) : neighbors.appp forIinrange(len ) neighbors ) ) :响应=neighbors [ I ] (-1 ) () ) ) ) ) )。 ifresponseinclassvotes 3360 class votes [ response ]=1else : class votes [ response ]=1sorted votes=sorted (密钥=lambda itites ) reverse=true ] return [ sorted votes [0] [0] defgetaccuracy [ testset, predictions (3360 correct=0forxinrange ) len ) testset [ x ] [-1 ]==predictions [ x ] 3360 correct 100 ] testset=[] 加载数据集(r ' c : (SERS (66 )桌面)深度学习testset (打印(培训集: ) repr ) len (培训集) ) hbors=getneighbors(trainingset,testset[x], k ) result=getresponse(neighbors ) predictions.append ) reetresponse (predictions.append ) rei actual 3360 ' repr (TTT predictions (print (accuracy :653360.3 f ).format (accuracy ) % ) ) print('**50 ) predictset=[ 1,2 ] 12 ) k=9forxinrange(len(predictset ) ) :neighbors=getneighbors ) trainingset,predictset[x],k ) result=getrespoors

3 .算法优点简单

容易理解

容易实现

可以具有通过k选择舍弃噪声数据的健壮性

4 .算法的缺点需要大量存储已知实例

算法复杂,需要计算所有已知类实例与分类实例之间的距离

在样本分布不均衡的情况下,一个样本实例过多容易影响分类。 如下图所示。

5 .考虑算法的改进距离,根据距离进行加权。

EG:(1/d ) d :指距离。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。