- 说明
- 可视化结果
说明
- 决策树相关内容,详情可见 决策树算法
Graphviz是一个开源的图(Graph)可视化软件,采用抽象的图和网络来表示结构化的信息。在数据科学领域,Graphviz的一个用途就是实现决策树可视化。为了将决策树可视化,首先需要创建一个dot文件来描述决策树,使用Graphviz将dot文件转换为图形文件,如png、jpg等。
- 安装graphviz库
详细安装过程,可参考Graphviz安装及使用-决策树可视化
pip install graphviz
或者用conda安装graphviz
conda install python-graphviz
通过export_graphviz()方法生成dot_data,此时的dot_data是一个字符串类型的数据
tree.export_graphviz(clf, out_file="tree.dot", feature_names = fn, class_names=cn, filled = True)
可以使用scikit-learn的tree.plot_tree方法来利用matplotlib将决策树可视化
tree.plot_tree(clf);可视化结果
代码如下(示例):
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn import tree import graphviz # Graphviz是一个开源的图(Graph)可视化软件,采用抽象的图和网络来表示结构化的信息 # 决策树可视化方法 # 加载数据集 data = load_iris() # 转换成.Dataframe形式 df = pd.Dataframe(data.data, columns = data.feature_names) # 添加品种列 df['Species'] = data.target # 用数值替代品种名作为标签 target = np.unique(data.target) target_names = np.unique(data.target_names) targets = dict(zip(target, target_names)) df['Species'] = df['Species'].replace(targets) # 提取数据和标签 X = df.drop(columns="Species") y = df["Species"] feature_names = X.columns labels = y.unique() X_train, test_x, y_train, test_lab = train_test_split(X,y, test_size = 0.4, random_state = 42) model = DecisionTreeClassifier(max_depth =3, random_state = 42) model.fit(X_train, y_train) # 1. 以文字形式输出树 text_representation = tree.export_text(model) print(text_representation) # 2. 用图片画出 # 使用scikit-learn的tree.plot_tree方法来利用matplotlib将决策树可视化 plt.figure(figsize=(30,10), facecolor ='g') # a = tree.plot_tree(model, feature_names = feature_names, class_names = labels, rounded = True, filled = True, fontsize=14) plt.show() # 3. 使用Graphviz得到的决策树可视化 # 将决策树模型导出为dot文件 # DOT data dot_data = tree.export_graphviz(model, out_file=None, feature_names=data.feature_names, class_names=data.target_names, filled=True) # Draw graph graph = graphviz.Source(dot_data, format="png") graph.render('DecisionTree')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)