Python社区  »  Python

python soc网络分析:通过遍历列表,使用函数计算“机会网络同质性”

avwinter • 1 周前 • 14 次点击  

我希望能把这些项目加入一个等式 从任何列表 字典值的。方程是计算嗜同性。

背景:

同性恋:在一个社交网络中,不同特征被共享的可能性。例如,样本人群中的人共享眼睛颜色的概率。

在这个例子中,等式可能是这样工作的:

(蓝眼频率/和频)^2+(褐眼频率/和频)^2

记住,即使你有两个以上的特征(绿色、淡褐色、灰色),这也必须有效。但是,我保持它的简单,以便于检查结果。

所以如果我们把这些数据做成字典的话:

EYES = {'Kevin':'brown', 'Frank':'blue', 'Alex':'blue', 'Tracey':'brown', 'Milo':'blue'}

首先,我在字典中计算值的频率,如下所示:

def frequency(EYES):
    Eyes_freq_dict = Counter(EYES.values())
    return Eyes_freq_dict

Counter({'blue': 3, 'brown': 2})

现在我有了第二本关于频率的字典:

 Counter({'blue': 3, 'brown': 2})

但是因为字典是无序的,所以我必须将这些值转换成一种可以进行数学运算的格式。

我想这个 需要 列个单子?如果我错了,请纠正我:

Eyes_freq_dict = frequency(EYES)
EYESlist = []
for v in Eyes_freq_dict.values():
    EYESlist.append(v)

然后我自己获取这些值,作为一个列表: 眼病学家 [3,2]

绊脚石:

我对用python做数学还不熟悉,所以我现在担心自己可能已经到了死胡同。我真的可以把这些组分插入到上面的方程中吗?

在这种情况下,所需的方程式为:

(眼睛列表[0]/sum(眼睛列表))^2+(眼睛列表[1])/sum(眼睛列表))^2

或者用英语来说,它可以:

**3/5平方+2/5平方=0.52**

现在的问题是:首先,如何遍历这个列表。然后是任何长度的列表,以得到正确的结果。

如果我走的路线是一个哑巴,请友好,但请让我知道!如果有更优雅的方法来解决这个问题,我会很高兴,但我希望这是一个有趣的探索。

只是想输入公式并用pythonic方法进行测试,我很困惑,因为我收到了一条错误消息:

 sum(((EYESlist[0]/ sum(EYESlist))**2)((EYESlist[1])/ sum(EYESlist))**2)
#TypeError: 'float' object is not callable

我希望有人能给我指出正确的方向!我想继续做剩下的家庭作业(我还有五个问题要解决)。

如果我不能很快解决这个问题,我可能会做的是,继续讨论其他问题,然后再回到这个问题上来。对我来说这是一个有趣的挑战。

最好的, 一个

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46574
 
14 次点击  
分享到微博