【发布时间】:2017-02-28 22:10:34
【问题描述】:
我的数据是 18 个向量,每个向量最多包含 200 个数字,但有些包含 5 个或其他数字。组织为:
[2, 3, 35, 63, 64, 298, 523, 624, 625, 626, 823, 824]
[2, 752, 753, 808, 843]
[2, 752, 753, 843]
[2, 752, 753, 808, 843]
[3, 36, 37, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, ...]
我想在这组列表中找到最相似的对。数字本身并不重要,它们也可能是字符串 - 一个列表中的 2 和另一个列表中的 3 不可比较。
我正在查看变量是否相同。例如,第二个列表与第 4 个列表完全相同,但与列表 3 仅有 1 个变量不同。
此外,还可以找到最相似的三元组或最相似的 n 个,但成对是第一个也是最重要的任务。
我希望我已经足够清楚地说明了这个问题,但我很高兴提供任何人可能需要的更多信息!
我感觉它涉及到 numpy 或 scipy 范数/余弦计算,但我不知道该怎么做,或者这是否是最好的方法。
任何帮助将不胜感激!
【问题讨论】:
-
您能否更准确地定义“相似”的含义?您是指差异最小的数字对吗?在您的三个示例列表中,“最相似”的对是什么?第一个列表中的 (63,64) 和第二个列表中的 (752,753) 哪个更相似?
-
我用一个例子更新了它
-
职位重要吗,还是只有每个列表中的项目在另一个列表中有副本时您才感兴趣?
-
Kezzos,位置不重要。这些值是唯一的,并且只会出现一次,因此位置并不重要。
标签: python python-2.7 numpy scipy cosine-similarity