检查元组Python中元素之间的相似性
我有以下清单:检查元组Python中元素之间的相似性,python,list,tuples,similarity,Python,List,Tuples,Similarity,我有以下清单: list= [(12.947999999999979,5804),(100000.0,1516),(12.948000000000008,844),(12.948000000000036,172),(18.252000000000066,92)] 元组中的第一个元素表示值,而元组中的第二个元素表示该值在文档中出现的频率。我的问题是如何对列表中的类似元素(例如列表中的第一个元素和第三个元素)进行聚类并组合它们的频率 使用计数器元素和舍入()到所需的小数位数。顺便说一下,不要使用保
list= [(12.947999999999979,5804),(100000.0,1516),(12.948000000000008,844),(12.948000000000036,172),(18.252000000000066,92)]
元组中的第一个元素表示值,而元组中的第二个元素表示该值在文档中出现的频率。我的问题是如何对列表中的类似元素(例如列表中的第一个元素和第三个元素)进行聚类并组合它们的频率 使用
计数器
元素和舍入()
到所需的小数位数。顺便说一下,不要使用保留字列表
:
from collections import Counter
l= [(12.947999999999979,5804),(100000.0,1516),(12.948000000000008,844),(12.948000000000036,172),(18.252000000000066,92)]
precision = 3
c = Counter()
for value, times in l:
c.update([round(value, precision)]*times)
如果计数器中已有数据,则可以直接执行此操作:
from collections import Counter
# data = Counter() # This is the counter where you have the data
precision = 3
joined = Counter()
for value, times in data.items():
joined.update([round(value, precision)]*times)
data = joined
设置一个阈值,其中两个值被认为属于同一个簇并结合它们的频率。你认为“相似”是什么?指定p`Recession。例如,差异小于10^-6的数字应分组。感谢您的回复。你能提供一个例子吗code@Adirio基本上,以12.9开头的值将分组为一个值value@LoniF遍历列表,为每个元素创建一个新集群或将其与现有集群组合。所以,
对于。。。如果:否则:
。你能做到的,洛尼!如果您有诸如[(12.95804),(12.81516),(12.7844)]
之类的值,这确实会有点棘手,因为如果集群是基于第一个元素定义的,则最后一个将不包含thres 0.1。