我有一个如下的结果类
class Result:
cluster = -1;
label = -1;
群集和标签的值都可以在0-9之间,我想做的是计算群集中标签的数量。目前,我正在使用以下代码进行计数,但这并不是一个很好的解决方案。resultList是Result对象的列表。
countZero = 0;
countOne = 0;
countTwo = 0;
countThree = 0;
countFour = 0;
countFive = 0;
countSix = 0;
countSeven = 0;
countEight = 0;
countNine = 0;
for i in range(len(resultList)):
if resultList[i].cluster == 0:
if resultList[i].label == 0:
countZero = countZero + 1
if resultList[i].label == 1:
countOne = countOne + 1
if resultList[i].label == 2:
countTwo = countTwo + 1
if resultList[i].label == 3:
countThree = countThree + 1
if resultList[i].label == 4:
countFour = countFour + 1
if resultList[i].label == 5:
countFive = countFive + 1
if resultList[i].label == 6:
countSix = countSix + 1
if resultList[i].label == 7:
countSeven = countSeven + 1
if resultList[i].label == 8:
countEight = countEight + 1
if resultList[i].label == 9:
countNine = countNine + 1
print(countZero) #
print(countOne) #
print(countTwo) #
print(countThree) #
print(countFour) #
print(countFive) #
print(countSix) #
print(countSeven) #
print(countEight) #
print(countNine) #
寻找更好的解决方案的任何建议或指导将不胜感激。
如果要获取集群中标签的特定计数,则可以创建cluster_id
和的嵌套字典label_id
:
# Create empty dictionary
cluster_dict = {}
# For 0-9 cluster_id
for cluster_id in range(10):
# Create a dict for each cluster
if cluster_id not in cluster_dict.keys():
cluster_dict[cluster_id] = {}
# For 0-9 label_id
for label_id in range(10):
# Set the cluster/label count to 0
cluster_dict[cluster_id][label_id] = 0
然后,您可以用以下result_list
值填充它:
for res in result_list:
cluster_dict[res.cluster][res.label] += 1
这样您就可以访问计数,因此对于集群0和标签2:
cluster_dict[0][2]
您也可以找到给定集群的结果数,而与标签无关:
sum(cluster_dict[0].values())
您还可以查找给定标签的结果数,而与群集无关:
sum([count for cluster_id, label_counter in cluster_dict.items() for label_id, count in label_counter.items() if label_id == 2])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句