【发布时间】:2011-10-06 06:50:42
【问题描述】:
我有两个列表:
例如。 a = [1,8,3,9,4,9,3,8,1,2,3] 和 b = [1,8,1,3,9,4,9,3,8,1,2,3]
两者都包含整数。整数背后没有任何意义(例如,1 与 3 的距离并不比与 8 的距离更近)。
我正在尝试设计一种算法来计算两个 ORDERED 列表之间的相似性。 Ordered 是这里的关键字(所以我不能只取两个列表的集合并计算它们的 set_difference 百分比)。有时数字会重复(例如上面的 3、8 和 9,我不能忽略重复)。
在上面的示例中,我调用的函数会告诉我 a 和 b 相似度约为 90%。我怎样才能做到这一点?我想到了编辑距离。我知道如何将它与字符串一起使用,但我不确定如何将它与整数列表一起使用。谢谢!
【问题讨论】:
-
考虑到一个字符串只是一个字符列表,在计算字符串的编辑距离和计算整数列表的编辑距离之间似乎有一个非常简单的映射。
-
也许您正在寻找hamming distance?
-
@Pat B:汉明距离要求序列长度相同,它不能处理删除/插入。看看 OP 的例子(
a和b)。 -
@aix:好点。我猜你可以用 izip_longest 压缩这两个列表来解决这个问题。