欧氏距离矩阵

时间:2017-06-01 11:46:10

标签: python matrix euclidean-distance

我想计算两个单词之间的欧几里德距离。首先,每个音素都是矢量化的:

g = (0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0)
a = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0)
k = (0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0)
n = (0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0)
N = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

两个单词之间的距离,' gaN'例如,' gak'是

dst1 = distance.euclidean(g,g)
dst2 = distance.euclidean(a,a)
dst3 = distance.euclidean(N,k)
dist = dst1+dst2+dst3
print(dist)

我想做的是一个巨大的矩阵,显示超过800个单词之间的所有距离。这应该类似于下表(如在csv文件中)

    gaN   gak   gan  gal ...
gaN 0     1.73  1.41
gak 1.73  0     2.24
gan 1.41  2.24  0
gal
...

有人可以帮我吗?我目前正在使用Python,但R也可以。

1 个答案:

答案 0 :(得分:0)

如您所知,欧几里德距离只能对数字对象进行操作。我不确定是什么样的现象,但是如果你已经对所有单词都有数字表示,那么它应该是微不足道的。 (在这种情况下,你的问题是将距离矩阵转换回GaN,gak表吗?如果是这样的话,需要更多关于你如何从那里到达phenome对象的信息。

至于转换为csv,这是微不足道的。实际上,您可以使用优秀的pandas包来添加零行:

将pandas导入为pd DIST = pd.DataFrame(euclidean_distances(TBL1,TBL2))。to_csv( 'distances.csv')