将tree.export_graphviz构建决策树代码转换为标准sql

将tree.export_graphviz构建决策树代码转换为标准sql

  • email:
    wang_xup@163.com
    857956556@qq.com
  • Github:
    https://github.com/WangxuP/graphviz_sql

1. 工具简介

通常我们会采用sklearn框架tree模块进行决策树相关的挖掘分析,并使用tree.export_graphviz将决策树过程导出为graphviz.dot文件。
将上步生成的文件配合外部程序graphviz进行画图。
但在有些时候,我们会根据决策树图形来抽取关键路径,将其翻译成标准sql,部署在数据库当中,持续化产生价值。
目前sklearn暂未提供此功能,故我们开发此插件来进行完善。

2. 安装环境、依赖

  • 离线手动下载安装

download

  • 在线安装

pip install graphviz_sql

  • 内部依赖
    • sklearn
  • 外部依赖
    • Graphviz:找到适合自己版本下载即可

3. 一个简单的示例

tree.export_graphviz输出结果转换为标准sql

tree.export_graphviz参数说明
为了能够准确的输出决策树规则,方法tree.export_graphviz当中一下参数必须设置成以下形式。其余参数使用默认的即可。

  • feature_names:特征名称,顺序必须和训练样本的数据一致
  • class_names:类别名称,输入的时候,必须要排序。如将原来的[‘1’, ‘0’]设置为[‘0’, ‘1’],注意:数据类型必须为str型的。
  • filled:填充,必须为True
  • node_ids:节点id,必须为True
  • rounded:画的图形边缘是否美化,必须为True
  • special_characters:必须为True

=========================

eg:

import pandas as pd
import numpy as np
from sklearn import tree
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
iris = load_iris()
clf = tree.DecisionTreeClassifier()

feature_names = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
data = pd.DataFrame(iris.data, columns=feature_names)
data['target'] = iris.target
X_train, X_test, y_train, y_test = train_test_split(
                   data[feature_names], data['target'], test_size=0.33, random_state=42)
clf = clf.fit(data[feature_names], data['target'])
# tree_rule.dot为输出文件的路径
tree.export_graphviz(clf,out_file='tree_rule.dot',
                            feature_names=feature_names,
                            class_names=['0', '1'],
                            filled=True,
                            node_ids=True,
                            rounded=True,
                            special_characters=True)


# 调用插件  
from graphviz_sql.extract import to_sql 

# tree_rule.txt: 通过决策树生成的用于graphviz画图的文件路径
# tree_rule_2.sql: 转换后的sql文件路径 
to_sql('tree_rule.dot', 'tree_rule_2.sql')

也可以去Github下载源码直接使用此函数进行转换。

4. 代码原理

通过一种反向搜索的方法遍历决策树结果,将结果转换成标准sql

5. 常见问题说明

  • 乱码
    • 此问题可百度一下,网上有具体的处理办法,
  • 其它问题请及时反馈

6. 加入进来

强大的工具需要你我共同完善,期待技术大佬的加入。

感谢你的阅读,如果这篇文章有帮助,请记得在Github给个星,感谢!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
tree.export_graphviz是scikit-learn库中的一个函数,用于将决策树模型导出为Graphviz格式的文件。Graphviz是一个开源的图形可视化工具,可以将图形描述语言转换为可视化图形。 使用tree.export_graphviz函数时,需要提供以下参数: - decision_tree决策树模型对象,即训练好的决策树模型。 - out_file:输出文件的路径和名称,可以是字符串或文件对象。例如:"tree.dot"。 - feature_names:特征名称列表,可选参数。用于指定特征的名称,可以提供便于理解的特征标签。默认为None,即使用自动生成的特征名称。 - class_names:类别名称列表,可选参数。用于指定类别的名称,可以提供便于理解的类别标签。默认为None,即使用自动生成的类别名称。 - filled:是否给节点上色,可选参数。默认为False,即不给节点上色。 - rounded:是否将节点框架设置为圆角,可选参数。默认为False,即节点框架为直角。 - special_characters:是否允许使用特殊字符,可选参数。默认为True。 示例代码如下所示: ```python from sklearn import tree tree.export_graphviz(decision_tree, out_file='tree.dot', feature_names=['feature1', 'feature2'], class_names=['class1', 'class2'], filled=True, rounded=True, special_characters=True) ``` 执行该代码后,会在当前目录下生成一个名为"tree.dot"的文件,该文件可以通过Graphviz工具转换为可视化的决策树图形。 注意:在使用tree.export_graphviz函数之前,需要先安装Graphviz工具,并将其添加到系统路径中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值