【发布时间】:2017-12-30 13:14:14
【问题描述】:
基本上,我在 Python 中有一个带有字符串键和整数数组作为值的 dict。
dict = {"Option1Results" : [4, 1, 5, 2, 4],
"Option2Results" : [11, 44, 2, 1, 5],
....
}
我想根据值的交集在这个字典上实现层次聚类。例如,假设 Option1Results 和 Option4Results 共享大约 70% 的相同整数,然后将它们聚集在一起。除了遍历字典并逐个比较值之外,还有其他方法吗?
【问题讨论】:
-
“将它们聚集在一起”是什么意思?这就是为什么强烈建议您在 SO 上展示您的最佳尝试,无论多么低效或蹩脚。您的代码通常使解释更容易。
-
字典不是解决这个问题的正确选择。
-
假设
A是[1,2,3,4]和B是[2,3,4,5]和C是[4,5,6,7]。根据您的标准,A和B会聚集,B和C会聚集,但A和C不会聚集。你会怎么处理? tag for hierarchical-clustering 提到了一些聚类技术。你选了一个吗?您研究过聚类技术的算法吗? -
您可以使用简单的
set交集来确定两个列表的共同元素,即set(your_dict["Option1Results"]) & set(your_dict["Option4Results"])。然后你可以将它的长度与set的总长度进行比较,以确定它们共有元素的百分比(例如float(len(set(entries["Option1Results"]) & set(entries["Option2Results"]))) / len(set(entries["Option1Results"]) | set(entries["Option2Results"])) * 100)
标签: python python-2.7 dictionary hierarchical-clustering