我创建了自己的函数来从sklearn创建的决策树中提取规则:

import pandas as pd

import numpy as np

from sklearn.tree import DecisionTreeClassifier

# dummy data:

df = pd.DataFrame({'col1':[0,1,2,3],'col2':[3,4,5,6],'dv':[0,1,0,1]})

# create decision tree

dt = DecisionTreeClassifier(max_depth=5, min_samples_leaf=1)

dt.fit(df.ix[:,:2], df.dv)

此函数首先从节点(在子数组中由-1标识)开始,然后以递归方式查找父节点。我将此称为节点的“谱系”。一路上,我抓住了我需要创建的值if / then / else SAS逻辑:

def get_lineage(tree, feature_names):

left      = tree.tree_.children_left

right     = tree.tree_.children_right

threshold = tree.tree_.threshold

features  = [feature_names[i] for i in tree.tree_.feature]

# get ids of child nodes

idx = np.argwhere(left == -1)[:,0]

def recurse(left, right, child, lineage=None):

if lineage is None:

lineage = [child]

if child in left:

parent = np.where(left == child)[0].item()

split = 'l'

else:

parent = np.where(right == child)[0].item()

split = 'r'

lineage.append((parent, split, threshold[parent], features[parent]))

if parent == 0:

lineage.reverse()

return lineage

else:

return recurse(left, right, parent, lineage)

for child in idx:

for node in recurse(left, right, child):

print node

下面的元组包含创建SAS if / then / else语句所需的一切。我不喜欢do在SAS中使用块,这就是我创建描述节点整个路径的逻辑的原因。元组之后的单个整数是路径中终端节点的ID。所有前面的元组组合起来创建该节点。

In [1]: get_lineage(dt, df.columns)

(0, 'l', 0.5, 'col1')

1

(0, 'r', 0.5, 'col1')

(2, 'l', 4.5, 'col2')

3

(0, 'r', 0.5, 'col1')

(2, 'r', 4.5, 'col2')

(4, 'l', 2.5, 'col1')

5

(0, 'r', 0.5, 'col1')

(2, 'r', 4.5, 'col2')

(4, 'r', 2.5, 'col1')

6

python决策树生成规则_如何从scikit-learn决策树中提取决策规则?相关推荐

  1. 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点

    决策树ID3.决策树C4.5.决策树CART.CART树的生成.树的剪枝.从ID3到CART.从决策树生成规则.决策树优缺点 目录

  2. python决策树怎么选择_【机器学习+python(8)】分类决策树的介绍与实现

    之前我们介绍过用逻辑回归根据鸢尾花萼片.花瓣的长度和宽度进行鸢尾花类别的判定:也通过朴素贝叶斯模型分享了如何根据男生专业和身高两大属性,判断其是否有女朋友.而本期我们将介绍另外一种有监督的机器学习分类 ...

  3. python决策树及规则解析(真实案例完整流程)

    上一篇博文用随机森林实现了发欺诈模型的构建,但随机森林隶属于集成学习的一种,属于黑箱算法,为了增强模型的解释性,本篇博文采用同样的数据适用决策树算法再次构建模型,并输出可视化二叉树形图以及规则文本,并 ...

  4. python决策树怎么选择_机器学习|决策树分类与python实现

    目录: 1.决策树简介 2.决策树生成 a) 选择标准--熵 b) 信息增益--ID3算法 c) 信息增益率--C4.5算法 d) Gini系数--CART算法 e) 评价标准--评价函数 3.剪枝操 ...

  5. python决策树的应用_决策树应用(一)

    上一篇讲了ID3决策树原理,现在开始拿一个例子进行实战 一.python机器学习库 scikit-learn.sklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训 ...

  6. 用python随机生成数字_如何实现python随机生成数字?

    今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:ran ...

  7. python批量生成图_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

  8. java流水号生成规则_流水号生成规则

    流水号生成规则,时间戳+手机号加密16位: 生成时间戳:Time.java import java.text.SimpleDateFormat; import java.util.Date; /** ...

  9. python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现

    概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...

最新文章

  1. 刀片服务器提升三要点
  2. 科学家发现鱼会数学,5以内的加减法难不倒它,网友:要多吃鱼了
  3. cannot import name '_C'
  4. JS的表单序列化,数组去重,判断数组是否重复等方法
  5. javascript Date 格式化
  6. Tomcat正常启动,一访问就报错
  7. standford lessons
  8. centos下wget时提示unable to resolve host address ...
  9. android webView的缓存机制和资源预加载
  10. SQL的主键和外键约束 小记
  11. linux c 多进程,【linux下c语言服务器开发系列1】多进程处理多客户端的连接
  12. python celery异步_python celery 异步学习
  13. java毕业设计选题之《校园管理、教育教学类》
  14. 浅谈web架构之架构设计
  15. 如何在页面打开后根据条件让EditorGridPanel的某一行的复选框默认选中?
  16. 【PAT】1105 Spiral Matrix(柳婼的思想详细解读)
  17. Python编程实现点到直线距离计算
  18. [LeetCode 1360~1363][周赛]周赛177题解
  19. Android 自定义高德地图比例尺
  20. Windows10彻底关闭安全中心

热门文章

  1. Java中string字符串的值_Java中的字符串(String)
  2. 【2019暑假刷题笔记-树的遍历】总结
  3. 5款强大的JVM 性能调优监控工具 !
  4. Spring Boot项目整合Retrofit最佳实践,最优雅的HTTP客户端工具!
  5. 你真的会停止线程吗?
  6. 并发基础篇(一): Java 并发性和多线程
  7. shiro教程(4)-shiro与项目集成开发
  8. Android自定义ViewGroup的OnMeasure和onLayout详解
  9. 解读Cardinality Estimation算法(第一部分:基本概念)
  10. java解压obb_Bundle包转apk(.obb格式转.apk)