关于数组:python中的循环计算

Loop calculations in Python

本问题已经有最佳答案,请猛点这里访问。

我正试图按照我的领导的要求从头开始构建一个熵函数。我有一个数据集ttrain,有很多变数,性就是其中之一。我必须提取类别(男性和女性),然后使用以下代码在循环中计算概率和熵:

1
2
3
4
5
6
7
8
9
10
11
12
13
def entropy3(c):
    import math
    u=c.unique()
    a=[]
    b=[]
    z=[]
    for i in range(len(u)):
        a=Ttrain[(c==u[i]) & (Ttrain.survived==1)].survived.count()
        b=Ttrain[(c==u[i]) & (Ttrain.survived==0)].survived.count()
        p=a/(a+b)
        q=b/(a+b)
        z=-(p)*math.log(p,2)-(q)*math.log(q,2)
        return z

现在,当我运行print(entropy3(ttrain.sex))时,我得到0.85,这是女性类别的熵。这意味着循环不会迭代到其他类别。如果有人能指出我哪里出了问题,我会很感激的。我对编程很陌生,所以请原谅任何概念上的错误。


返回语句(如果存在)是在函数中执行的最后一个语句。因此,一旦它返回女性类别的值,控件就退出该函数。因为您的RETURN语句在for循环中,所以不会处理下一个类别。您可以将返回移动到for循环之外,并有一个列表来存储您想要返回的每个值。