k-近邻算法

本文介绍了基于Python3实现的k-近邻(kNN)算法,包括算法的伪代码解释、代码修正(从Python2到Python3的迭代器变化)、使用kNN改进约会网站配对结果的案例,以及手写识别系统的数据集信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于python3实现的《机器学习实战》ch2 k-邻近算法

1.kNN算法伪代码如下:

对未知类别属性的数据集中的每个点依次执行以下操作:
1)计算已知类别数据集中的点与当前点之间的距离;
2)按照距离递增次序排序;
3)选取与当前点距离最近的k个点;
4)确定前k个点所在类别的出现频率;
5)返回前k个点出现频率最高的类别作为当前点的预测分类。

2.程序2-1 k邻近算法
def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]
    #采用欧式距离公式计算距离
    diffMat = tile(inX, (dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    
    sortedDistIndicies = distances.argsort()     
    classCount={
   } 
    
    #统计当前点与已知数据集距离最近的k个点的类别         
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]

上面的代码是基于python2,在python3下运行会出现以下错误:
AttributeError: ‘dict’ object has no attribute 'iteritems’
将代码中的classCount.iteritems()改为classCount.items()即可

3.使用kNN改进约会网站的配对结果

数据集下载链接:链接: https://pan.baidu.com/s/1WcOfYaC_lNSpOHU-NyQ-mA 提取码: kiwj
数据集共有1000行,前3列分别表示:每年获得的飞行常客里程数、玩视频游戏所消耗的时间百分比、每周消耗的冰淇淋公升数,最后一列表示所属的类别,其中1表示:‘not at all’, 2表示:‘in small doses’, 3表示:‘in large doses’

#程序2-2 将文本记录转换为Numpy的解析程序 
def file2matrix(filename):
    fr = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值