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循环之外,并有一个列表来存储您想要返回的每个值。