Python距离包的实现

本文介绍了Python中计算欧氏距离、曼哈顿距离和切比雪夫距离的方法。这些距离计算在推荐系统和文本分析中有着广泛应用。欧氏距离是两点之间直线的长度,曼哈顿距离类似于在街区行走的直线距离,而切比雪夫距离则是象棋中皇后移动的最小步数。通过这些距离,可以衡量两个向量的相似度,特别是在处理稀疏数据时,余弦相似度能有效避免稀疏度的影响。
摘要由CSDN通过智能技术生成

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">看了不少书,不同的算法中经常使用不同的距离函数。然而,基本都是在一个文件里只用特定的某一种距离函数,缺乏一个整体的距离包来直接用于调用,不是特别方便。因此,我写了个将各种常用距离函数放在一起的包,包括了欧氏距离、曼哈顿距离、切比雪夫距离和余弦相似度,马氏距离暂时就先不管了,做推荐或者医学数据挖掘用的也确实不算多,而且scipy里有scipy.spatial.distance包可以调用。本文涉及的代码主要参考了《写给程序员的数据挖掘实践指南》一书。</span>


欧氏距离 (Euclidean Distance):

这个还是比较容易理解的,就是两点之间连线的长度,对于两个n维的向量rating1rating2(原书中计算距离的主要目的是根据评分进行推荐,所以变量名取成了这个样子),欧氏距离可以计算如下(已经导入了numpy):

def euclidean(rating1, rating2):
    distance = 0
    for key in rating1:
        if key in rating2:
            temp = (rating1[key] - rating2[key]) ** 2
            distance += temp
    distance = sqrt(distance)
    return distance

曼哈顿距离 (Manhattan Distance):

又称城市街区距离,顾名思义,就像穿行在曼哈顿的街区一样,只能走直线然后拐弯在接着走直线,而不是两点之间直线最短,毕竟前面都是居民区对不对...

def manhattan(rating1, rating2):
    distance = 0
    for key in rating1:
        if key in rating2:
            distance += abs(rating1[key] - ratin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值