当前位置:   article > 正文

决策树的学习--并且可视化决策树_应用决策树的2种特征选择策略,分别给出预测结果并可视化

应用决策树的2种特征选择策略,分别给出预测结果并可视化

决策树是一种分类器,在决策树中,每个非树叶节点代表一个属性上的测试,每个分支代表该测试的一个输出,而每个树叶节点存放一个类标号,树的顶端节点为根节点。
在决策树的分类情况中,不需要任何领域知识或者参数设置,因此适合探索式知识发现,并且,其他的分类方法多需要数据归一化处理,但决策树而言,可以不采用数据归一化,直接进行训练,并且决策树是可以进行可视化,看最后的树的形式是怎么样的,这是他的好处。
决策树的坏处在于可能产生过拟合的现象,并且常用的树剪枝的方法并不提供,设置合理的树深以及叶子节点的个数可以避免过拟合的情况;并且可以选择合适的特征,也即可以利用PCA,ICA,Feature selection方法来得到好的特征;可以先确定树深(max_depth)为3的情况下,然后根据实际情况来增加树深;使用min_samples_split或者min_samples_leaf来控制叶子节点中的采样的数目,避免过拟合,很小的数值情况下,容易过拟合,可以先采用5作为初始的值,然后再根据实际情况来进行判断。
在训练数据为:训练集的规模: 1249,训练集中1类的个数:657,训练集中0类的个数:592。此时选用的是缺省时的默认参数。
这里写图片描述
第一个是选用的属性选择度量参数,默认为基尼指数。常用的属性选择度量为:信息增益,信息率和基尼指数。在这里有二种,信息增益和基尼指数二种。信息增益是在ID3中使用的,目的在于能够找出区分对元祖进行分类的信息量最小的属性,而且多用于多分支的树的建立,对于基尼指数而言,严格的建立二叉树。对于信息率是在信息增益上的一个改进版本的处理。三种均会偏向于多值属性问题。
第二个参数为划分的策略,若为”best”,则为最优划分的策略来划分,若为“random”,则采用最好的随机策略来划分,,其实这个我也不太懂,就设定为默认参数吧。
第三个参数是最大树深,可以避免过拟合的情况发生,缺省的时候默认为没有最大树深,肯定会过拟合。
第四个参数是最小采样划分,第五个参数是最小采样的叶子节点树,二者均是为了避免过拟合的现象而设立数值。
具体的参数不进行介绍了,其他参数大概很少用到。
这里写图片描述
在这里,我有点感兴趣的参数是feature_importances_, n_features_.
感觉可以用来分析建立的决策树模型中,特征的评估。
好吧,,那个n_features_, 我把它的用途理解错了,我以为它是可以统计得到最好有几个特征来得到决策树,没想到,不智能,只是统计一下建立决策树的时候有几维特征而已。。。

具体贴一部分程序:

 # 得到决策树的分类情况
    def _export_graphviz(self):
        """
        :return: 在我这边,在类中的函数,之前已经训练好了决策树self._clf_model,调用即可
        """
        dot_data = export_graphviz(self._clf_model, out_file=None)
        print self._clf.feature_importances_
        graph = graphviz.Source(dot_data)
        graph.render("tree")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

画出的决策树,如图所示:
这里写图片描述

这里写图片描述
由上述的决策树,我们可以知道,对于特征2来说,占主要的位置,特征0,1,7,5占一定的比重,其他特征所占比重比较小。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/330815
推荐阅读
相关标签
  

闽ICP备14008679号