机器学习中的常用距离

If x1,x2∈Rn, then:
闵可夫斯基距离 Minkowski Distance

d12=∑k=1n(x1k−x2k)p−−−−−−−−−−−−√p,p>0

欧氏距离 Enclidean Distance
L2 norm

d12=∑k=1n(x1k−x2k)2−−−−−−−−−−−−√ or d12=(x1−x2)T(x1−x2)−−−−−−−−−−−−−−−−√

标准化欧式距离/加权欧式距离 Weighted Euclidean Distance

d12=∑k=1n(x1k−x2kSk)2−−−−−−−−−−−−−−⎷

where Sk is the standard deviation.

from numpy import *
vectormat=mat([[1,2,3],[4,5,6]])
v12=vectormat[0]-vectormat[1]
varmat=std(vectormat.T, axis=0)
normmat=(vectormat-mean(vectormat))/varmat.T
normv12=normmat[0]-normmat[1]
print(sqrt(normv12*normv12.T))

曼哈顿距离 Manhattan Distance
L1 norm

d12=∑k=1n|x1k−x2k|

切比雪夫距离 Chebyshev Distance
L∞ norm

d12=maxi(|x1i−x2i|)

from numpy import *
vector1=mat([1,2,3])
vector2=mat([4,5,7])
print(abs(vector1-vector2).max())

夹角余弦 Cosine

cosθ=∑nk=1x1kx2k∑nk=1x21k−−−−−−−−√∑nk=1x22k−−−−−−−−√

汉明距离 Hamming Distance
In information theory, the Hamming distance between two strings of equal length is the number of positions at which the corresponding symbols are different. In other words, it measures the minimum number of substitutions required to change one string into the other. (referred from Wikipedia)

from numpy import *
matV=mat([[1,1,0,1,0,1,0,0,1],[0,1,1,0,0,0,1,1,1]])
smstr=nonzero(matV [0]-matV[1])
print(shape(smstr[0])[0])

杰卡德相似系数 Jaccard Similarity Coefficient
Given two sets, A and B, the Jaccard similarity coefficient is defined as

J(A,B)=|A∩B||A∪B|

杰卡德距离 Jaccard Distance

Jδ(A,B)=1−J(A,B)=|A∪B|−|A∩B||A∪B|

from numpy import *
import scipy.spatial.distance as dist
matV=mat([[1,1,0,1,0,1,0,0,1],[0,1,1,0,0,0,1,1,1]])
print(dist.pdist(matV,'jaccard'))

马氏距离 Mahalanobis Distance
Given m sample vectors X1,…,Xm whose mean value is μ and covariance matrix is S, then the Mahalanobis distance of sample vector X and μ is defined as

D(X)=(X−μ)TS−1(X−μ)−−−−−−−−−−−−−−−−−√

that of sample vector Xi and Xj is

D(X)=(Xi−Xj)TS−1(Xi−Xj)−−−−−−−−−−−−−−−−−−−−√

时间: 2025-01-29 23:47:42

机器学习中的常用距离的相关文章

周志华撰文介绍机器学习两大派别;机器学习中常用激活函数的总结与比较 | AI开发者日报

周志华:机器学习有这两大派别,新人入门别跟错队 机器学习作为近年来非常火的一个概念,关注者追随者甚众,然而它的渊源及由来却鲜有人知晓.南京大学的周志华教授在近期的 AIDL2<机器学习前沿>会议上分享介绍了机器学习的两大派别,以及入门需要注意的一些要点.雷锋网整理如下: 详情:http://www.leiphone.com/news/201702/z1aKZcHhkdKtQFoa.html CitizenNet博客:商业系统中的随机森林算法,集合和性能指标 本文由CitizenNet的首席科学

结合美团下单率预测详解机器学习中的数据清洗与特征处理

目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐.筛选排序.搜索排序.用户建模等等.本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法. 综述 机器学习框架 如上图所示是一个经典的机器学习问题框架图.数据清洗和特征挖掘的工作是在灰色框中框出的部分,即"数据清洗=>特征,标注数据生成=>模型学习=>模型应用"中的前两个步骤. 灰色框中蓝色箭头对应的是离线处理部分.主要工作是 从原始数据,如文本.图像或者应用数据中清洗出特征数据和

Javascript中最常用的55个经典技巧

原文:Javascript中最常用的55个经典技巧 1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table oncontextmenu = "return(false)"></table> 可用于Table 2. <body onselectstart="return false"> 取消选取.防止复制 3. onpaste=&quo

机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

版权声明:    本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言:    上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在verycd可下载,可惜没有翻译.不过还是可以看.另外一个是prml-pattern r

[译]如何处理机器学习中的不平衡类别

本文讲的是[译]如何处理机器学习中的不平衡类别, 原文地址:How to Handle Imbalanced Classes in Machine Learning 原文作者:elitedatascience 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:RichardLeeH 校对者:lsvih, lileizhenshuai 如何处理机器学习中的不平衡类别 不平衡类别使得"准确率"失去意义.这是机器学习 (特别是在分类)中一个令人惊讶的

机器学习中决策树的原理与算法 | 科普

雷锋网(公众号:雷锋网)按:本文作者栗向滨,中科院自动化所复杂系统国家重点实验室研究生毕业,机器学习与计算机视觉方向算法工程师.雷锋网首发文章. 我们知道,在机器学习中有两类十分重要的问题,一类是分类问题,一类是回归问题.我们今天所要探讨的就是在分类和回归问题中所用到的一种非常基本的方法,叫决策树.决策树也是重要的标签学习方法.这篇文章里面的部分内容来自于 AI 慕课学院的<机器学习理论与实战高级特训班>课程笔记. 从名字来看,决策的的意思就是在众多类别中我们需要决策出我们分类的东西是属于哪一

网站设计资源:网站设计中最常用的表单插件

文章简介:网站项目中最常用的表单插件. 今天带来的是网站项目中最常用的表单插件. jQuery Complexify 网站有责任告诉用户他们设置的密码的质量,这款插件可以显示密码的复杂程度,通过视觉反馈把风险降到最低. 使用非常简单,示例 HTML 代码: 1 2 3 4 5 6 7 8 9 <script src="../assets/s/jquery.complexify.js"></script> <div id="demo"&g

用户体验设计:工作中最常用到的统计方法

"用户体验设计中用到的统计学方法"看到豆瓣上有网友提了这个问题,看到回答的人不多,忍不住写了下面的内容. 工作中最常用到的统计方法有哪些?根据我自己的经验给举些例子. 1.通过一部分用户样本预估整体的用户情况.比如,你的网站用户有200万注册用户,你要征询他们对于网站改进的意见,你需要给他们发邮件问卷.但由于种种限制,你不能每个用户都发,而且你收到的有效问卷只有1500多份.你要明确一下,你收集到得1500多份问卷到底多大程度上可以带代表200万的整体.这时候,你要预估误差范围(mar

asp.net程序中最常用的三十三种编程代码

asp.net|编程|程序 asp.net程序中最常用的三十三种编程代码,为初学者多多积累经验,为高手们归纳总结,看了觉得很有价值~,大家不妨参考下!  1. 打开新的窗口并传送参数:   传送参数:  response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")