2024-04-20 05:16:35 发布
网友
假设下面的元组列表表示来自3种不同方法的情绪估计:
[('pos', 0.2), ('neu', 0.1), ('pos', 0.4)]
我想知道什么是找到多数人情绪的最有效方法,并以此计算其平均值,即:
谢谢
import itertools l = [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)]
你可以先按情绪分组(注意需要先排序)
然后找出哪种情绪是最常见的(aka拥有最长的群体)
majority = max(sentiments, key=len) # majority = [('pos', 0.2), ('pos', 0.4)]
最后计算平均值
values = [i[1] for i in majority] average = (majority[0][0], sum(values)/len(values)) # average = ('pos', 0.30000000000000004)
使用^{}和^{}模块可以执行以下操作:
from collections import Counter from statistics import mean lst = [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)] count = Counter(item[0] for item in lst) # Counter({'pos': 2, 'neu': 1}) maj = count.most_common(1)[0][0] # pos mn = mean(item[1] for item in lst if item[0] == maj) result = (maj, mn) print(result) # ('pos', 0.30000000000000004)
虽然考虑到你在寻找效率,我更喜欢CoryKramer's answer。在
import collections reports = [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)] oracle = collections.defaultdict(list) for mood, score in reports: oracle[mood].append(score) counts = {mood: len(scores) for mood, scores in oracle.items()} mood = max(counts) # gives `'pos'` sum(oracle[mood]) / len(oracle[mood]) # gives 0.3
你可以先按情绪分组(注意需要先排序)
^{pr2}$然后找出哪种情绪是最常见的(aka拥有最长的群体)
最后计算平均值
使用^{} 和^{} 模块可以执行以下操作:
虽然考虑到你在寻找效率,我更喜欢CoryKramer's answer。在
相关问题 更多 >
编程相关推荐