在做很多研究问题时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。

1、欧式距离

#1) given two data points, calculate the euclidean distance between them

defget_distance(data1, data2):

points=zip(data1, data2)

diffs_squared_distance= [pow(a - b, 2) for (a, b) inpoints]return math.sqrt(sum(diffs_squared_distance))

2、余弦相似度

defcosin_distance(vector1, vector2):

dot_product= 0.0normA= 0.0normB= 0.0

for a, b inzip(vector1, vector2):

dot_product+= a *b

normA+= a ** 2normB+= b ** 2

if normA == 0.0 or normB == 0.0:returnNoneelse:return dot_product / ((normA * normB) ** 0.5)

3、用Numpy进行余弦相似度计算

sim =user_item_matric.dot(user_item_matric.T)

norms=np.array([np.sqrt(np.diagonal(sim))])

user_similarity=(sim / norms / norms.T)

4、用scikit cosine_similarity计算相似度

from sklearn.metrics.pairwise importcosine_similarity

user_similarity=cosine_similarity(user_tag_matric)

5、用scikit pairwise_distances计算相似度

from sklearn.metrics.pairwise importpairwise_distances

user_similarity= pairwise_distances(user_tag_matric, metric='cosine')

需要注意的一点是,用pairwise_distances计算的Cosine distance是1-(cosine similarity)结果

6. 曼哈顿距离

defManhattan(vec1, vec2):

npvec1, npvec2=np.array(vec1), np.array(vec2)return np.abs(npvec1-npvec2).sum()#Manhattan_Distance,

7. 切比雪夫距离

defChebyshev(vec1, vec2):

npvec1, npvec2=np.array(vec1), np.array(vec2)return max(np.abs(npvec1-npvec2))#Chebyshev_Distance

8. 闵可夫斯基距离

#!/usr/bin/env python

from math import*

from decimal importDecimaldefnth_root(value,n_root):

root_value=1/float(n_root)return round(Decimal(value)**Decimal(root_value),3)defminkowski_distance(x,y,p_value):return nth_root(sum(pow(abs(a-b),p_value) for a,b inzip(x,y)),p_value)print(minkowski_distance([0,3,4,5],[7,6,3,-1],3))

9. 标准化欧氏距离

defStandardized_Euclidean(vec1,vec2,v):from scipy importspatial

npvec=np.array([np.array(vec1), np.array(vec2)])return spatial.distance.pdist(npvec, 'seuclidean', V=None)#Standardized Euclidean distance#http://blog.csdn.net/jinzhichaoshuiping/article/details/51019473

10. 马氏距离

defMahalanobis(vec1, vec2):

npvec1, npvec2=np.array(vec1), np.array(vec2)

npvec=np.array([npvec1, npvec2])

sub= npvec.T[0]-npvec.T[1]

inv_sub=np.linalg.inv(np.cov(npvec1, npvec2))returnmath.sqrt(np.dot(inv_sub, sub).dot(sub.T))#MahalanobisDistance

11. 编辑距离

defEdit_distance_str(str1, str2):importLevenshtein

edit_distance_distance=Levenshtein.distance(str1, str2)

similarity= 1-(edit_distance_distance/max(len(str1), len(str2)))return {'Distance': edit_distance_distance, 'Similarity': similarity}#Levenshtein distance

python npv 计算公式_机器学习各种相似性度量及Python实现相关推荐

  1. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  2. python npv 计算公式_怎样用python写经济学的npv公式

    展开全部 净现值是指投2113资方案所产生的现5261金净流量按照一定的折现系数折现之后与4102原1653始投资额现值的差额. 根据企业会计准则和企业会计制度的规定: 一.企业应当根据固定资产所含经 ...

  3. 怎么用python自制计算公式_自制计算经纬度位移 python 程序

    前两天,我的老同学发邮件给我,希望我能制作一个能多点定位的,可以计算经度和纬度距离的在线计算器来帮助他的工作.当然还不止这些,同时他还希望能做以下相对的排序. 比如说,同一个位置的经纬度开始,移动向东 ...

  4. r语言和python的区别_机器学习怎样开始比较好?Python还是R语言?

    全文共3077字,预计学习时长11分钟 图源:unsplash 机器学习是近几年来最热门的技术之一,也许你对机器学习很感兴趣,但却不知从何处下手.别担心,兴趣是最好的老师这里有你开启该领域职业生涯的完 ...

  5. python基线计算法_从头开始:用Python实现基线机器学习算法

    在预测建模时,确定基线性能(baseline performance)是很重要的. 基线为评估更高级的方法提供了比较的标准. 在本教程中,你将了解如何在 Python 中实现基线机器学习算法(Base ...

  6. python机器学习及实践_机器学习入门之《Python机器学习及实践:从零开始通往Kaggle竞赛之路》...

    本文主要向大家介绍了机器学习入门之<Python机器学习及实践:从零开始通往Kaggle竞赛之路>,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. <Python 机 ...

  7. python svr回归_机器学习入门之机器学习之路:python支持向量机回归SVR 预测波士顿地区房价...

    本文主要向大家介绍了机器学习入门之机器学习之路:python支持向量机回归SVR  预测波士顿地区房价,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 支持向量机的两种核函数模型进行预 ...

  8. python做运动控制_第一课:用Python操控小龟小车运动

    欢迎来到小龟的课堂,今天我们讲如何用小龟小车的车载Python控制小车运动. 如果小伙伴还不会使用小龟小车的Python编辑器的话,可以阅读这篇教程<如何使用小龟小车的Python编辑器> ...

  9. print python excel分隔_合并/拆分 Excel?Python、VBA轻松自动化

    作者 | Ryoko 来源 | 凹凸数据 当你收集了 n 个人的 EXCEL 记录表,需要将它们汇成一个总表时你会怎么做呢? 如果不通过技术手段,要一个个打开再复制粘贴也太麻烦了吧! 此时就需要一个通 ...

最新文章

  1. 华科发布报告:41%研究生学霸是单身!
  2. 纯Rust编写的机器学习框架Neuronika,速度堪比PyTorch
  3. 工作中Oracle常用的SQL
  4. 2019编译ffepeg vs_2020/5-Win10下ffmpeg最简编译方法
  5. 【转】iPython入门技巧
  6. 神经网络的基本工作原理
  7. c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...
  8. oracle连接数增加无法释放,Oracle连接数过多释放机制
  9. SUN公司经典linux教材转自http://blog.chinaunix.net/uid-20446831-id-1677336.html
  10. c语言先调用load函数,透过源码全流程分析+load函数初始化
  11. 面试题 计算机安全,XX计算机信息安全工程师面试题路由.doc
  12. python使用pip安装_Python pip 安装与使用
  13. 【BZOJ】3436: 小K的农场
  14. Dreamweaver网页设计与制作100例:用DIV+CSS技术设计的书法主题网站(web前端网页制作课作业)
  15. 【将Cityscape和Foggy_Cityscape转换为PASACAL VOC格式的目标检测数据集】
  16. sql round函数(case函数)
  17. Java基础篇--编程之路,道长且艰,千里之行,始于足下
  18. 蓝牙配对-扫描-连接-状态查询
  19. 路由器RIP简单配置和讲解
  20. CANape使用记录(一):CANape新建工程及标定观测

热门文章

  1. php 模仿 java_js模仿java的Map集合,实现功能
  2. hp designiet 500_2020年HP学院壁纸
  3. NatApp 内网穿透工具简单使用介绍说明
  4. python教程:实现延时回调普通函数的方法
  5. Python基础教程:列表、字典、集合推导式
  6. Python 常用排序Demo|冒、插、快、希等入门算法
  7. python 单例模式的四种创建方式
  8. Python 中函数(function)的用法
  9. Python:数据编码与处理
  10. c语言用define预处理命令定义,C语言程序设计第八章预处理命令..doc