距离计算在自然语言处理中被广泛使用,不同的距离计算方式适用于不同的环境,其中产生了许多不同的效果。
余弦距离
馀弦夹角也称为馀弦相似度。 中夹角可以用来测量两个矢量方向的差异,机器学习中借用这个概念来测量样本矢量之间的差异。
馀弦值的范围为[-1,1 ]。 求出两个向量的夹角,求出与夹角相对应的馀弦值,则词馀弦值可以用来表示这两个向量的相似性。 夹角越小越接近0度,馀弦值越接近1,它们的方向越一致,越相似。 当两个向量的方向完全相反时,中心角的馀弦取最小值-1。 馀弦值为0时,两个向量正交,夹角为90度。 因此,可知余弦类似度与向量的大小无关,与向量的方向相关。
公式说明:
Python代码实现:
导入编号为
#NP.dot(VEC1、vec2 )向量)数组)将两个数组的点积(即元素)对应相乘并求和
#NP.linalg.norm(vec1 ) :求出VEC1向量的二范数(向量的模)
ve C1=[ 1,2,3,4 ]
ve C2=[ 5,6,7,8 ]
dist1=NP.dot(vec2,vec2 )/(NP.Lina LG.norm ) VEC1 ) NP.Lina LG.norm (ve C2 ) )
print (余弦距离测试的结果是(t(str(dist1) ) ) ) ) ) ) ) ) ) )。
bbdjqm距离
cqdjd距离是cqdjd空间中两点之间的直线距离。
Python实现:
导入编号为
生成ve C1=NP.mat ([ 1,2,3,4 ] ) numpy矩阵
ve C2=NP.mat ([ 5,6,7,8 ]
根据#式求解1
dist1=NP.sqrt(NP.sum ) NP.square (ve C1-ve C2 ) )
print (欧式距离测试的结果为((t(str ) dist1) ) ) ) ) ) ) ) 652
dist2=NP.sqrt () *(vec1-vec2 ) * ((ve C1-ve C2 ).t ) ) ) ) ) ) ) ) ) )。
根据#式求解2
(print (欧式距离测试的结果是(t(str ) dist2) ) ) ) ) ) ) ) ) ) )
3曼哈顿距离
曼哈顿距离也将是城市街区距离。 表示两点在标准坐标系上的绝对轴距之和。 也就是说,从一个十字路口到另一个十字路口的行驶距离不是两点之间的直线距离。
Python实现
导入编号为
ve C1=NP.mat ([ 1,2,3,4 ]
ve C2=NP.mat ([ 6,7,8,9 ]
() ) ) )。
曼哈顿距离测试的结果是((t(str(dist ) ) ) ) ) ) ) ) )
4 ngdxtg距离
明氏距离又称ngdxtg距离,是欧几里得空间中的测度,被认为是欧几里得距离和曼哈顿距离的推广。
当p=1、曼哈顿距离为p=2、欧几里得距离为p=3时,从python实现鲜艳运动鞋距离
可以引用前面的代码
5运动鞋的鲜艳距离
python实现
导入编号为
ve C1=NP.mat ([ 1,2,3,4 ]
ve C2=NP.mat ([ 5,6,7,8 ]
dist=NP.max(NP.ABS ) VEC1-VEC2 ) ) ) ) ) ) ) )。
print (鲜艳的运动鞋距离测试结果为(t(str ) dist ) ) ) ) ) )
6杰卡尔德距离
豺(Jaccard )相似系数)两个集合a和b的交集在a、b的合并中所占的元素的比例。 称为两个集合的豺相似系数,用符号j(a,b )表示。 杰卡距离:占有率中取的是两个集合中不同的元素。
Python实现:
导入编号为
v1=NP.random.random(10 ) 0.5 )生成10个true false数据(即0,1 )
v2=NP.random.random(10 ) 0.5
VEC1=NP.asanyarray(V1,np.int32 )变换比特0,1矩阵
VEC2=NP.asanyarray(V2,np.int32 ) )。
#距离计算
up=NP.double(NP.bitwise_and ) ) VEC1!=vec2 ),NP.bitwise_or(VEC1!=0,vec2!=0().sum ) )涉及数学逻辑运算
down=NP.double(NP.bitwise_or ) veC1!=0,vec2!=0).sum () )取并行集合,(vec1!=0,vec2!=0)与前面对应的要素转动true,false的矩阵
dist=(上/下)
print (杰卡距离测试的结果是(t(str(dist ) ) ) ) ) ) )
7汉明距离
在信息论中,两个出现字符串之间的汉明距离对应于位置不同的字符的个数。 也就是说,要将一个字符串转换为另一个字符串必须替换的字符数。
例如,“toned”和“roses”之间的汉明距离为3
python实现:
导入编号为
v1=NP.random.random(10 ) 0.5
v2=NP.random.random(10 ) 0.5
VC1=NP.asArray(V1,np.int32 ) ) ) ) ) ) )。
VC2=NP.asArray(V2,np.int32 ) ) ) ) ) ) )。
dist=NP.mean(VEC1!=vec2 ) #取平均值
print (汉明距离测试的结果,(t ) str(dist ) ) ) ) ) ) ) ) ) )