簡體   English   中英

繪制單個 XGBoost 決策樹

[英]Plot a Single XGBoost Decision Tree

我正在使用https://machinelearningmastery.com/visualize-gradient-boosting-decision-trees-xgboost-python/上的方法來繪制 XGBoost 決策樹

from numpy import loadtxt
from xgboost import XGBClassifier
from xgboost import plot_tree
import matplotlib.pyplot as plt
# load data
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")
# split data into X and y
X = dataset[:,0:8]
y = dataset[:,8]
# fit model no training data
model = XGBClassifier()
model.fit(X, y)
# plot single tree
plot_tree(model)
plt.show()

當我得到 150 個特征時,所有分割點的情節看起來都很小,如何繪制一個清晰的或保存在本地位置或任何其他方式/想法可以清楚地表明這棵“樹”是非常受歡迎的在此處輸入圖片說明

我最近遇到了同樣的問題,我發現的唯一方法是嘗試不同的圖形大小(它仍然可以是大圖形的藍色。例如,要繪制第 4 棵樹,請使用:

fig, ax = plt.subplots(figsize=(30, 30))
xgb.plot_tree(model, num_trees=4, ax=ax)
plt.show()

要保存它,你可以這樣做

plt.savefig("temp.pdf")

此外,每棵樹都將兩個類分開,因此您擁有與類一樣多的樹。

要添加到 Serk 的答案中,您還可以在顯示之前調整圖形的大小:

# ...
plot_tree(model)
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
plt.show()

您可以嘗試改用 to_graphviz 方法 - 對我來說,它會產生更清晰的圖片。

xgb.to_graphviz(xg_reg, num_trees=0, rankdir='LR')

但是,您很可能會遇到該輸出大小的問題。

在這種情況下,請遵循以下步驟: 如何指定決策樹的 graphviz 表示的 figsize?

我在 github 上找到了這個解決方法,它也提供了更好的圖像,但缺點是你必須在之后打開 .png 文件。

xgb.plot_tree(bst, num_trees=2)
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(150, 100)
fig.savefig('tree.png')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM