作家
登录

机器学习算法实践:决策树 (Decision Tree)

作者: 来源: 2017-07-18 18:02:17 阅读 我要评论

  •  
  •         return get_majority(classes) 
  •  
  •   
  •  
  •     # 决裂创建新的子树 
  •  
  •     tree = {} 
  •  
  •     best_feat_idx = self.choose_best_split_feature(dataset, classes) 
  •  
  •     feature = feat_names[best_feat_idx] 
  •  
  •     tree[feature] = {} 
  •  
  •   
  •  
  •     # 创建用于递归创建子树的子数据集 
  •  
  •     sub_feat_names = feat_names[:] 
  •  
  •     sub_feat_names.pop(best_feat_idx) 
  •  
  •   
  •  
  •     splited_dict = self.split_dataset(dataset, classes, best_feat_idx) 
  •  
  •     for feat_val, (sub_dataset, sub_classes) in splited_dict.items(): 
  •  
  •         tree[feature][feat_val] = self.create_tree(sub_dataset, 
  •  
  •                                                    sub_classes, 
  •  
  •                                                    sub_feat_names) 
  •  
  •     self.tree = tree 
  •  
  •     self.feat_names = feat_names 
  •  
  •   
  •  
  •     return tree  
  • 树决裂的终止前提有两个

    • 一个是遍历完所有的属性

    可以看到,在进行树决裂的时刻,我们的数据集中的数据向量的长度是赓续缩短的,当缩短到0时,解释数据集已经将所有的属性用尽,便也决裂不下去了, 这时我们拔取最终子数据集中的众数作为最终的分类结不雅放到叶子节点上.

    • 另一个是新划分的数据集中只有一个类型。

    若某个节点所指向的数据集都是同一种类型,那天然没有须要在决裂下去了即使属性还没有遍历完.

    构建一棵决定计划树

    这我用了一下MLiA书上附带的隐形眼镜的数据来生成一棵决定计划树,数据中包含了患者眼部状况以及大夫推荐的隐形眼镜类型.

    起首先导入数据并将数据特点同类型分开作为练习数据用于生成决定计划树

    1. from trees import DecisionTreeClassifier 
    2.  
    3.   
    4.  
    5. lense_labels = ['age''prescript''astigmatic''tearRate'
    6.  
    7. X = [] 
    8.  
    9. Y = [] 
    10.  
    11.   
    12.  

    13.   推荐阅读

        手机只需发条消息即可开始大规模SQL注入攻击

      【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! SQL注入(SQLi)应用不安然 Web App 和数据库驱动的类似软件,采取或修改数据(如用户账户记录),甚至在办事>>>详细阅读


      本文标题:机器学习算法实践:决策树 (Decision Tree)

      地址:http://www.17bianji.com/lsqh/36282.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)