我试图按照我的领导者的要求从头开始构建熵函数。我有一个数据集Ttrain,有很多变量,性别是一个。我必须提取类别(男性和女性),然后使用以下代码在 循环 中随后计算概率和熵:
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,这是女性类别的熵。这意味着循环不会迭代到其他类别。如果有人能指出我哪里出错了,将不胜感激。我对编程非常陌生,所以请原谅任何概念上的错误。
答案 0 :(得分:0)
return语句(如果存在)是在函数中执行的最后一个语句。因此,只要它返回女性类别的值,控件就会退出该功能。由于您的return语句位于for循环中,因此下一个类别不会被处理。您可以在for循环外移动返回,并有一个列表来存储您想要返回的每个值。