应对这个问题的一种方法是利用直方图。以下是一个示例(使用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
因此,您需要更加具体地找出最适合您目的的相似度度量方法。
a
和b
)。 - NPE