集体编程智慧(决策树)-Gini Impurity 公式推导

以下是《集体编程智慧中的代码》

  1. def uniquecounts(rows):
  2.    results={}
  3.    for rowin rows:
  4.       # The result is the last column
  5.       r=row[len(row)-1]
  6.       if rnot in results: results[r]=0
  7.       results[r]+=1
  8.    return results
  9.  
  10. def giniimpurity(rows):
  11.   total=len(rows)
  12.   counts=uniquecounts(rows)
  13.   imp=0
  14.   for k1in counts:
  15.     p1=float(counts[k1])/total
  16.     #imp+=p1*p1
  17.     for k2in counts:
  18.       if k1==k2:continue
  19.       p2=float(counts[k2])/total
  20.       imp+=p1*p2
  21.   return imp#1-imp
基尼不纯度的大概意思是 一个随机事件变成它的对立事件的概率。    例如 一个随机事件X ,P(X=0) = 0.5 ,P(X=1)=0.5 那么基尼不纯度就为    P(X=0)*(1 - P(X=0)) +     P(X=1)*(1 - P(X=1))   = 0.5

公式为:



而本书中并未使用这个公式(其实使用该公式会让代码更加清晰明了),接下来我们解释书中代码使用的数学内容:
假设:A+B+C=1
             (A+B+C)(A+B+C)-(A*A+B*B+C*C)=2*(A*B+A*C+B*C)
             1-( A*A+B*B+C*C)=2*(A*B+A*C+B*C)
             等式左边就是基尼不纯度




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值