决策树可视化

决策树相比其他算法的一个重要特性就是——可解释性,构建决策树的过程就相当于形成 if-then 规则集。如果我们能够将生成的决策树可视化,那么我们就可以对数据集与预测值之间的关系有清晰的认识。

决策树可视化_第1张图片

我们可以使用 graphviz 包来帮助我们可视化决策树模型,安装地址传送门。然后,选择适合操作系统的版本下载。下载完成后可以将 graphviz bin 目录路径添加到系统环境变量中,这样方便后续的操作。

代码示例

首先,我们以 sklearn.datasets 包中的鸢尾花数据集为例。

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

dataset = load_iris()
x = dataset.data
y = dataset.target

接着,我们训练决策树模型,新增参数 max_depth 用以限制树的深度,为了决策树模型过拟合,在这里主要是不想让最后导出的决策树图片过大,方便大家观看。

model = DecisionTreeClassifier(max_depth=3)
model.fit(x, y)

然后,调用 export_graphviz() 方法输出一个图形定义文件,命名为 iris_tree.dot。

from sklearn.tree import export_graphviz

export_graphviz(
    model, 
    out_file='iris_tree.dot',
    feature_names=dataset.feature_names,
    class_names=dataset.target_names,
    rounded=True, 
    filled=True
)

最后,可以使用 graphviz 包的中的 dot 命令行工具将这个 .dot 文件转换为其他格式,例如 PDF 或 PNG。

dot -Tpng iris_tree.dot -o iris_tree.png

【iris_tree.png】:

决策树可视化_第2张图片

我们再把 max_depth 设置得大一些,看看最后生成的决策树长什么样?

model = DecisionTreeClassifier(max_depth=5)
model.fit(x, y)

决策树可视化_第3张图片

参考

  • 《机器学习实战-基于Scikit-Learn和TensorFlow》

你可能感兴趣的:(机器学习)