一種方式來處理,這是利用histogram。作爲一個例子(示範與numpy):
In []: a= array([1,8,3,9,4,9,3,8,1,2,3])
In []: b= array([1,8,1,3,9,4,9,3,8,1,2,3])
In []: a_c, _= histogram(a, arange(9)+ 1)
In []: a_c
Out[]: array([2, 1, 3, 1, 0, 0, 0, 4])
In []: b_c, _= histogram(b, arange(9)+ 1)
In []: b_c
Out[]: array([3, 1, 3, 1, 0, 0, 0, 4])
In []: (a_c- b_c).sum()
Out[]: -1
現在存在着的方法,利用a_c
和b_c
過多。
凡(貌似)簡單的相似性措施是:
In []: 1- abs(-1/ 9.)
Out[]: 0.8888888888888888
其次:
In []: norm(a_c)/ norm(b_c)
Out[]: 0.92796072713833688
和:
In []: a_n= (a_c/ norm(a_c))[:, None]
In []: 1- norm(b_c- dot(dot(a_n, a_n.T), b_c))/ norm(b_c)
Out[]: 0.84445724579043624
因此,你需要更具體的到找出適合您的目的的最適合的相似性度量。
考慮一個字符串,僅僅是字符的列表,就似乎是計算字符串編輯距離和計算整數列表編輯距離之間的一個非常簡單的映射。 – Chowlett
也許你正在尋找[漢明距離](http://en.wikipedia.org/wiki/Hamming_distance)? –
@Pat B:漢明距離要求序列具有相同的長度,並且它不能處理刪除/插入。看看OP的例子('a'和'b')。 – NPE