Python 2.7 python中的Log base 2计算
我试图计算ID树中的平均无序度。我的代码如下:Python 2.7 python中的Log base 2计算,python-2.7,Python 2.7,我试图计算ID树中的平均无序度。我的代码如下: Republican_yes = yes.count('Republican') Democrat_yes = yes.count('Democrat') Republican_no = no.count('Republican') Democrat_no = no.count('Democrat') Indep_yes = yes.count('Independent') Indep_no = no.count('Independent') d
Republican_yes = yes.count('Republican')
Democrat_yes = yes.count('Democrat')
Republican_no = no.count('Republican')
Democrat_no = no.count('Democrat')
Indep_yes = yes.count('Independent')
Indep_no = no.count('Independent')
disorder_yes= Republican_yes/len(yes)*(math.log(float(Republican_yes)/len(yes),2))+ Democrat_yes/len(yes)*(math.log(float(Democrat_yes)/len(yes),2))+Indep_yes/len(yes)*(math.log(float(Indep_yes)/len(yes),2))
disorder_no= Republican_no/len(no)*(math.log(float(Republican_no)/len(no),2))+Democrat_no/len(no)*(math.log(float(Democrat_no)/len(no),2))+Indep_no/len(no)*(math.log(float(Indep_no)/len(no),2))
avgdisorder = -len(yes)/(len(yes)+len(no))*disorder_yes - len(no)/(len(yes)+len(no))*disorder_no
返回avgdisorder
为什么我总是得到数学域错误?检查长度是否为0,否则您将得到
MathError
if len(yes):
disorder_yes= Republican_yes/len(yes)*(math.log(float(Republican_yes)/len(yes),2))+ Democrat_yes/len(yes)*(math.log(float(Democrat_yes)/len(yes),2))+Indep_yes/len(yes)*(math.log(float(Indep_yes)/len(yes),2))
if len(no):
disorder_no= Republican_no/len(no)*(math.log(float(Republican_no)/len(no),2))+Democrat_no/len(no)*(math.log(float(Democrat_no)/len(no),2))+Indep_no/len(no)*(math.log(float(Indep_no)/len(no),2))
if len(yes) or len(no):
avgdisorder = -len(yes)/(len(yes)+len(no))*disorder_yes - len(no)/(len(yes)+len(no))*disorder_no
如果需要,您可以根据自己的要求为所有3个
If
语句添加else
子句。您是否尝试过检查以确保所有变量值均为零?这是最可能的问题。谢谢!如何仅为公式选择非零值?