[英]How to output leaf in pandas dataframe from XGBoost classifier
I have read in a csv file which contains 8 predictive features ( col_list
) and one target feature (Target variable is called " chd
" -> 1= Heart Attack; 0 = No Heart Attack).我已阅读 csv 文件,其中包含 8 个预测特征(
col_list
)和一个目标特征(目标变量称为“ chd
”-> 1 = 心脏病发作;0 = 无心脏病发作)。
df = pd.read_csv(loc+'HeartDisease.csv', index_col=0)
Y = df['chd']
col_list = ['sbp','tobacco','ldl','adiposity','typea','obesity','alcohol','age']
I have trained an XGBoost Classifier:我训练了一个 XGBoost 分类器:
# fit model no training data
model = XGBClassifier(
base_score=0.1,
booster='gbtree',
colsample_bylevel=1,
colsample_bynode=1,
colsample_bytree=0.6,
enable_categorical=False,
gamma=0.1,
gpu_id=-1,
importance_type=None,
interaction_constraints='',
learning_rate=0.1,
max_delta_step=0,
max_depth=8,
min_child_weight=1,
monotone_constraints='(1,1,1,1,1,1,1,1)',#,"(1,-1)"
n_estimators=4, n_jobs=1,
nthread=1,
num_parallel_tree=1,
predictor='auto',
random_state=0,
reg_alpha=0,
reg_lambda=1,
scale_pos_weight=1,
silent=True,
subsample=0.6,
tree_method='exact',
validate_parameters=1,
verbosity=None)
I have then visualized the tree:然后我将树可视化:
fig, ax = plt.subplots(figsize=(30, 30))
plot_tree(model,ax=ax)
plt.show()
How can I create a column called " leaf
" in the df
dataframe that contains the values of the terminal leaves shown in the picture above?如何在
df
dataframe 中创建一个名为“ leaf
”的列,其中包含上图中显示的终端叶子的值?
You can use xgboost.Booster
's method trees_to_dataframe
:您可以使用
xgboost.Booster
的方法trees_to_dataframe
:
df = model.Booster.trees_to_dataframe()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.