采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
抱歉,这里确实有问题。应该使用加权平均,而非算术平均。(在这里,我相当于使用算数平均值,直接除以2,只不过由于每个分类结果都除以2,在比较不同分类结果的时候,除以2就可以省略了。)
具体权值为尝试划分以后每个节点的数据量占全部数据量的百分比。假设尝试划分的节点中,数据总量为m,尝试划分以后,左孩子的数据量为m_l,右孩子的数据量为m_r,则左孩子的数据量占比p_l = m_l / m;右孩子的数据量占比为p_r = m_r / m,
我们尝试划分后的信息熵为:
e = p_l * entropy(y_l) + p_r * entropy(y_r)
由于在这里,我测试的数据集太小,整体分类结果也相对明显,使用算术平均和使用加权平均没有产生划分上的区别,所以没有测试出这个问题。抱歉。现在,我已经在课程官方的notebook上修改了这个问题,可以参考:
https://github.com/liuyubobobo/Play-with-Machine-Learning-Algorithms/blob/master/12-Decision-Tree/03-Entropy-Split-Simulation/03-Entropy-Split-Simulation.ipynb
另外,下一小节的gini系数牵扯同样的问题,我也进行了修改,参考:https://github.com/liuyubobobo/Play-with-Machine-Learning-Algorithms/blob/master/12-Decision-Tree/04-Gini-Index/04-Gini-Index.ipynb
非常抱歉!
感谢你的问题,如果愿意,可以加我微信,我会发给你一个小红包:)liuyubobobo
再次抱歉。感谢指正!加油!:)
这次理解了,非常感谢bobo老师
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14