У меня есть три словаря, в которых ключи одинаковы, однако масштабы этих словарей значительно различаются. Я хочу нормализовать / стандартизировать значения этих словарей, чтобы затем суммировать их вместе, чтобы создать общую комбинированную оценку для каждого ключа (с равными весами для трех разных входов).
Current:
page_score = {'andrew.lewis: 6.599', 'jack.redmond: 4.28'.....'geoff.storey: 2.345)
eigen_score = {'andrew.lewis: 4.97', 'jack.redmond: 2.28'.....'geoff.storey: 3.927)
(1 more)
Normalized:
page_score = {'andrew.lewis: 0.672', 'jack.redmond: 0.437'.....'geoff.storey: 0.276)
hub_score = {'andrew.lewis: 0.432', 'jack.redmond: 0.762'.....'geoff.storey: 0.117)
(1 more)
End Output:
overall_score = {'andrew.lewis: 2.738.....) """combination of values across the three standardized dictionaries"""
Как мне этого добиться? Я знаю, как сделать это для списка, однако я не уверен, как добиться этого для словаря. Я уже пробовал решения, предоставленные здесь и здесь , однако, как ни странно, они создавали различные ошибки. Любая помощь будет оценена. Код до сих пор:
G = nx.read_weighted_edgelist('Only_50_Employees1.csv', delimiter=',', create_using = nx.DiGraph(), nodetype=str)
between_score = dict(nx.betweenness_centrality(G))
eigen_score = dict(nx.eigenvector_centrality(G))
page_score = nx.pagerank(G)
Уже пробовал
factor=1.0/sum(page_score.values())
normalised_d = {k: v*factor for k, v in page_score.items()}
def normalize(page_score, target=1.0):
raw = sum(page_score.values())
factor = target/raw
return {key:value*factor for key,value in page_score.items()}
def really_safe_normalise_in_place(page_score):
factor=1.0/math.fsum(page_score.values())
for k in page_score:
page_score[k] = page_score[k]*factor
key_for_max = max(page_score.tems(), key=operator.itemgetter(1))[0]
diff = 1.0 - math.fsum(page_score.values())
#print "discrepancy = " + str(diff)
page_score[key_for_max] += diff
d={v: v+1.0/v for v in xrange(1, 1000001)}
really_safe_normalise_in_place(d)
print math.fsum(page_score.values())
Снимок экрана словаря page_score: