目录
相关系数 ( Correlation coefficient )与相关距离(Correlationdistance)
前言
机器学习算法中,如k近邻,聚类算法等,需要计算样本间的距离。样本间距离的计算方法与具体解决的问题相关。常用的距离计算方法有:欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离等。
曼哈顿距离
考虑在城市两点之间不能横穿,必须沿着街道走,曼哈顿距离也称为城市街区距离(City Block distance)。m维空间两点的曼哈顿距离为:
d12=sum(np.abs(x1-x2))
'''
from scipy.spatial.distance import pdist
d12=pdist([x1,x2],"cityblock")
'''
欧氏距离
欧氏距离最常用的一种距离计算方法,源自欧氏空间中两点间的距离公式,n维空间的欧氏距离计算公式如下。
d12=np.sqrt(np.sum(np.square(x1-x2)))
'''
from scipy.spatial.distance import pdist
d12=pdist([x1,x2],"euclidean")
'''
切比雪夫距离
国际象棋zhong 国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?你会发现最少步数总是max(| x2-x1| , |y2-y1| ) 步。有一种类似的一种距离度量方法叫切比雪夫距离(L∞范数)。
np.abs(vector1-vector2).max()
'''
from scipy.spatial.distance import pdist
d12=pdist([x1,x2],"chebyshev")
'''
闵可夫斯基距离(Minkowski Distance)
两个n维变量x1与 x2间的闵可夫斯基距离定义为:
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
d12=np.sum(np.abs(x1-x2)**p)**(1/p)
'''
from scipy.spatial.distance import pdist
d12=pdist([x1,x2],"minkowski",p=2)
'''
余弦相似性
对文本数据分析时,常用余弦相似性为计算文本的相似性,其值越大说明文档越相似。
from scipy.spatial.distance import pdist
d12=pdist([x1,x2],"cosine)
相关系数 ( Correlation coefficient )与相关距离(Correlationdistance)
相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
from scipy.spatial.distance import pdist
pdist([x,y],"correlation") #相关距离
np.corrcoef([x,y]) #相关系数
汉明距离(Hamming distance)
两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。
from scipy.spatial.distance import pdist
d12 = pdist([x,y], 'hamming')
'''
metric : str or function, optional
The distance metric to use. The distance function can
be 'braycurtis', 'canberra', 'chebyshev', 'cityblock',
'correlation', 'cosine', 'dice', 'euclidean', 'hamming',
'jaccard', 'jensenshannon', 'kulsinski', 'mahalanobis', 'matching',
'minkowski', 'rogerstanimoto', 'russellrao', 'seuclidean',
'sokalmichener', 'sokalsneath', 'sqeuclidean', 'yule'.
'''