dtreeviz框架的可视化问题



这是我在pycharm中运行的代码,它应该显示漂亮的可视化图表,但没有显示结果

import matplotlib.pyplot as plt
import pydotplus
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn import tree
from io import StringIO
from ipywidgets import Image
from dtreeviz.trees import *
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# fit the classifier
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
clf.fit(X_train, y_train)
viz = dtreeviz(clf,
x_data=X_train,
y_data=y_train,
target_name='class',
feature_names=iris.feature_names,
class_names=list(iris.target_names),
title="Decision Tree - Iris data set")
plt.show()

例如,我使用此链接作为参考https://github.com/erykml/medium_articles/blob/master/Machine%20Learning/decision_tree_visualization.ipynb即使我在googlecolab中运行了这段代码,谷歌colab中也没有显示任何结果,那么怎么了?该代码的输出如下:

Process finished with exit code 0

您的代码混合了示例代码的一些部分(并包含了一些不需要的部分(。

如果您运行以下程序:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from dtreeviz.trees import dtreeviz
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
x = iris.data
y = iris.target
x_train, _, y_train, _ = train_test_split(x, y, test_size=0.2, random_state=42)
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
clf.fit(x_train, y_train)
viz = dtreeviz(clf,
x_data=x_train,
y_data=y_train,
target_name='class',
feature_names=iris.feature_names,
class_names=list(iris.target_names),
title="Decision Tree - Iris data set")
viz.view()

如果您安装了所有引用的包,并且GraphViz和GraphViz被配置在PATH上(在您启动编辑器/IDE之前(,那么调用viz.view()将生成并启动.svg文件。

如果你有一个配置为查看.svg的应用程序(比如网络浏览器或InkScape等(,它应该会显示你想要的结果。

(注意,我还从PyCharm在Python 3.10.8上运行了这段代码——任何3.10都应该有效——使用了所有软件包的最新版本和GraphViz的新安装。(

您可以通过在PyCharm中打开一个终端并运行:dot -V来检查GraphViz是否可以运行。你应该看到这样的东西:

dot - graphviz version 6.0.2 (20221011.1828)

最新更新