作家
登录

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

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

 sub_tree 
  •  
  •         sub_node = Node._make([uuid.uuid4(), node_label]) 
  •  
  •         nodes.append(sub_node) 
  •  
  •   
  •  
  •         edge = Edge._make([root_node, sub_node, edge_label]) 
  •  
  •         edges.append(edge) 
  •  
  •   
  •  
  •         sub_nodes, sub_edges = self.get_nodes_edges(sub_tree, root_node=sub_node) 
  •  
  •         nodes.extend(sub_nodes) 
  •  
  •         edges.extend(sub_edges) 
  •  
  •   
  •  
  •     return nodes, edges  
  • 基尼不纯度(Gini impurity)

    基尼不纯度的定义:

    个中m 表示数据集D 中类其余个数, pi 表示某种类型出现的概率。可见当只有一种类型的时刻基尼不纯度的值为0,此时不纯度最低。

    针对划分成k个子数据集的数据集的基尼不纯度可以经由过程如下式子计算:

    直接经由过程嵌套字典表示决定计划树对仁攀来说不好懂得,我们须要借助可视化对象可视化树构造,这里我将应用Graphviz来可视化树构造。为此实现了讲字典表示的树生成Graphviz Dot文件内容的函数,大年夜致思惟就是递归获取整棵树的所有节点和连接节点的边然后将这些节点和边生成Dot格局的字符串写入文件中并画图。

    由此我们可以根据不纯度的变更来拔取最有的树决裂属性

    树决裂

    关于用什么数据构造来表示决定计划树,在Python中可以应用字典很便利的表示决定计划树的嵌套,一个树的根节点就是属性,属性对应的值又是一个新的字典,个中key为属性的可能值,value为新的子树。

    下面是我应用Python实现的根据数据集创建决定计划树:

    1. def create_tree(self, dataset, classes, feat_names): 
    2.  
    3.     ''' 根据当前数据集递归创建决定计划树 
    4.  
    5.   
    6.  
    7.     :param dataset: 数据集 
    8.  
    9.     :param feat_names: 数据集中数据响应的特点名称 
    10.  
    11.     :param classes: 数据集中数据响应的类型 
    12.  
    13.   
    14.  
    15.     :param tree: 以字典情势返回决定计划树 
    16.  
    17.     ''
    18.  
    19.     # 如不雅数据集中只有一种类型停止树决裂 
    20.  
    21.     if len(set(classes)) == 1: 
    22.  
    23.         return classes[0] 
    24.  
    25.   
    26.  
    27.     # 如不雅遍历完所有特点,返回比例最多的类型 
    28.  
    29.     if len(feat_names) == 0: 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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