我希望从字典值的任何列表中插入一个等式。这个方程是用来计算同源性的。在
同质性:不同特征在社交网络中被分享的概率。例如,一个样本群体中的人共享同一种眼睛颜色的概率。在
在这个例子中,这个等式是如何工作的:
(蓝眼睛频率/总和频率)^2+(棕色眼睛频率/总和频率)^2
记住,即使你有两个以上的特征(绿色、淡褐色、灰色),这也必须有效。但是,我会保持简单,以便检查结果。在
因此,如果我们有字典形式的数据:
EYES = {'Kevin':'brown', 'Frank':'blue', 'Alex':'blue', 'Tracey':'brown', 'Milo':'blue'}
首先,我计算字典中值的频率,如下所示:
^{pr2}$现在我有了第二个单独的频率字典来处理:
^{3}$但是因为字典是无序的,我必须把这些值转换成一种可以用来计算的格式。在
我认为这个需要作为一个列表?如果我错了,请纠正我:
Eyes_freq_dict = frequency(EYES)
EYESlist = []
for v in Eyes_freq_dict.values():
EYESlist.append(v)
然后我自己得到这些值,作为一个列表: 眼科医生 [3,2]
我刚开始用Python做数学,所以我现在担心我可能会走到死胡同。我真的可以把这些成分代入上面的方程吗?在
在这种情况下,所需的等式为:
(EYESlist[0]/sum(EYESlist))^2+(EYESlist[1])/sum(EYESlist))^2
或者在英语中,它的意思是:
**3/5平方+2/5平方=0.52**
现在的问题是:如何迭代,首先,这个列表。然后是任何列表(任何长度)以获得正确的结果。在
如果我走这条路,请让我知道!如果有更优雅的方法来解决这个问题,我会很高兴,但我希望这是一个有趣的探索。在
我只是想用Python的方式输入公式并进行测试,但我很困惑,因为我收到了一条错误消息:
sum(((EYESlist[0]/ sum(EYESlist))**2)((EYESlist[1])/ sum(EYESlist))**2)
#TypeError: 'float' object is not callable
我希望有人能给我指出正确的方向!我想继续做剩下的作业(我还有五个问题要做)。在
如果我不能很快解决这个问题,我可能会做的是转移到其他问题上,然后再回到这个问题上来。对我来说这是一个有趣的挑战。在
最好的, A
根据你的解释,这个问题很清楚,差不多已经解决了。在
使用列表是准确的并且很容易处理,尽管有一种更有效的方法。在
我们可以将
frequency()
给出的Counter对象显式地转换为list 使用因为我们需要迭代列表中的每个值来计算同伦概率。在
^{pr2}$使用值列表调用函数将直接返回
chance_homophily
,而不管您使用多少种眼睛颜色。在输出:
相关问题 更多 >
编程相关推荐