python决策树生成规则_如何从scikit-learn决策树中提取决策规则?
我创建了自己的函数来从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决策树中提取决策规则?相关推荐
- 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点
决策树ID3.决策树C4.5.决策树CART.CART树的生成.树的剪枝.从ID3到CART.从决策树生成规则.决策树优缺点 目录
- python决策树怎么选择_【机器学习+python(8)】分类决策树的介绍与实现
之前我们介绍过用逻辑回归根据鸢尾花萼片.花瓣的长度和宽度进行鸢尾花类别的判定:也通过朴素贝叶斯模型分享了如何根据男生专业和身高两大属性,判断其是否有女朋友.而本期我们将介绍另外一种有监督的机器学习分类 ...
- python决策树及规则解析(真实案例完整流程)
上一篇博文用随机森林实现了发欺诈模型的构建,但随机森林隶属于集成学习的一种,属于黑箱算法,为了增强模型的解释性,本篇博文采用同样的数据适用决策树算法再次构建模型,并输出可视化二叉树形图以及规则文本,并 ...
- python决策树怎么选择_机器学习|决策树分类与python实现
目录: 1.决策树简介 2.决策树生成 a) 选择标准--熵 b) 信息增益--ID3算法 c) 信息增益率--C4.5算法 d) Gini系数--CART算法 e) 评价标准--评价函数 3.剪枝操 ...
- python决策树的应用_决策树应用(一)
上一篇讲了ID3决策树原理,现在开始拿一个例子进行实战 一.python机器学习库 scikit-learn.sklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训 ...
- 用python随机生成数字_如何实现python随机生成数字?
今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:ran ...
- python批量生成图_利用Python批量生成任意尺寸的图片
实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...
- java流水号生成规则_流水号生成规则
流水号生成规则,时间戳+手机号加密16位: 生成时间戳:Time.java import java.text.SimpleDateFormat; import java.util.Date; /** ...
- python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现
概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...
最新文章
- 刀片服务器提升三要点
- 科学家发现鱼会数学,5以内的加减法难不倒它,网友:要多吃鱼了
- cannot import name '_C'
- JS的表单序列化,数组去重,判断数组是否重复等方法
- javascript Date 格式化
- Tomcat正常启动,一访问就报错
- standford lessons
- centos下wget时提示unable to resolve host address ...
- android webView的缓存机制和资源预加载
- SQL的主键和外键约束 小记
- linux c 多进程,【linux下c语言服务器开发系列1】多进程处理多客户端的连接
- python celery异步_python celery 异步学习
- java毕业设计选题之《校园管理、教育教学类》
- 浅谈web架构之架构设计
- 如何在页面打开后根据条件让EditorGridPanel的某一行的复选框默认选中?
- 【PAT】1105 Spiral Matrix(柳婼的思想详细解读)
- Python编程实现点到直线距离计算
- [LeetCode 1360~1363][周赛]周赛177题解
- Android 自定义高德地图比例尺
- Windows10彻底关闭安全中心
热门文章
- Java中string字符串的值_Java中的字符串(String)
- 【2019暑假刷题笔记-树的遍历】总结
- 5款强大的JVM 性能调优监控工具 !
- Spring Boot项目整合Retrofit最佳实践,最优雅的HTTP客户端工具!
- 你真的会停止线程吗?
- 并发基础篇(一): Java 并发性和多线程
- shiro教程(4)-shiro与项目集成开发
- Android自定义ViewGroup的OnMeasure和onLayout详解
- 解读Cardinality Estimation算法(第一部分:基本概念)
- java解压obb_Bundle包转apk(.obb格式转.apk)