WangxuP / graphviz_sql

将tree.export_graphviz构建决策树代码转换为标准sql
7 stars 2 forks source link

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

1. 工具简介

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

2. 安装环境、依赖

3. 一个简单的示例

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

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

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

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.dot: 通过决策树生成的用于graphviz画图的文件路径
# tree_rule_2.sql: 转换后的sql文件路径 
to_sql('tree_rule.dot', 'tree_rule_2.sql')

4. 代码原理

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

5. 常见问题说明

6. 加入进来

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