淘先锋技术网

首页 1 2 3 4 5 6 7

                                                  “简单来说,决策树就是设计分支判断条件”

        大家都学过数据结构,其中的树形结构都了然于心,决策树就可以看成是,每一个分叉处做出条件,满足哪一个,就继续向下走,直到把树遍历完成为止。

        既然都说到这份上了,决策树的关键一定不是预测,毕竟遍历的操作和if...else...大家都会,条件也会给出来,那决策树重要的一点在于什么呢?

“建树”

        关键在于怎样生成决策树:

        依据什么标准或者指标去生成,到底哪个特征放在前面(哪个作为权重最大的,最能区分的)

量化分类区分:

                信息熵

                基尼系数(评估一个分类区分度)

“信息熵”:

 想必大家高中都学过“熵”这个概念:熵越大越不平衡

        信息熵越小,分类区分度越好,排前面 ,信息熵越大(越不确定,意味着越糊涂)

用我们陈老师的话来说就是:把聪明的特征区分排前面!!!!

“基尼系数”:

                                                基尼系数越小,意味着信息越确定

 而这两个比较下来的话,算法时间复杂度的角度:推荐基尼系数

                                                

直观的看一下分类的图:

 一就是一二就是二,如果切割的很细,就容易出现过拟合

                好的,懂得了工式和原理,我们写一个DecisionTree类(代码注释均已标出),这样更加便于理解:

样本点:

 

dt = DecisionTree()
dt.fit(X,y)
print(dt.tree)

调用后生成的树:

预测新样本:

 

dt.predict(t,r)
print(r)