ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

决策树、随机森林可视化

2026/9/12 1:28:51 拓冰建站 浏览量
决策树、随机森林可视化

分享一个Python可视化工具pybaobabdt,轻松对决策树、随机森林可视化,例如,

图怎么看:每一种颜色代表一个class,link的宽度表示从一个节点流向另一个节点的items数量。


安装

pip install pybaobabdt
pip install pygraphviz

可视化决策树

import pybaobabdt
import pandas as pd
from scipy.io import arff
from sklearn.tree import DecisionTreeClassifier #导入决策树算法data = arff.loadarff('winequality-red.arff')
df = pd.DataFrame(data[0])y = list(df['class'])
features = list(df.columns)
features.remove('class')
X = df.loc[:, features]clf = DecisionTreeClassifier().fit(X, y)
ax = pybaobabdt.drawTree(clf, size=10, dpi=300, features=features) #可视化主函数pybaobabdt.drawTree


可视化决策树-设置树深度

通过maxdepth限制需要渲染的树深度,对large trees特别友好,

ax = pybaobabdt.drawTree(clf,size=10,dpi=100,maxdepth=6,  #设置渲染的树的最大深度features=features)


可视化决策树-突出class 

通过colormap凸显感兴趣的class,

from matplotlib.colors import ListedColormapax = pybaobabdt.drawTree(clf,size=10,dpi=600,colormap=ListedColormap(["#01a2d9", "gray", "#d5695d","gray"]),  #通过颜色突出展示class 5和6 变量features=features)


可视化随机森林

import pybaobabdt
import pandas as pd
from scipy.io import arff
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier  #导入随机森林算法data = arff.loadarff('vehicle.arff')df = pd.DataFrame(data[0])
y = list(df['class'])
features = list(df.columns)
features.remove('class')
X = df.loc[:, features]clf = RandomForestClassifier(n_estimators=20, n_jobs=-1, random_state=0)
clf.fit(X, y)size = (15, 15)
plt.rcParams['figure.figsize'] = size
fig = plt.figure(figsize=size, dpi=300)for idx, tree in enumerate(clf.estimators_):ax1 = fig.add_subplot(5, 4, idx + 1)pybaobabdt.drawTree(tree,model=clf,size=15,dpi=300,maxdepth=8,features=features,ax=ax1)

参考:https://pypi.org/project/pybaobabdt/