带有分类变量的 XG Boost 模型转储

问题描述 投票:0回答:0

我正在尝试对分类数据和数字数据的混合运行 XGBoost。虽然我能够训练模型并进行预测,但我无法将模型输出转储到 df 或 json。相反,我得到了错误:

Check failed: is_categorical: A in feature map is numerical but tree node is categorical.

如果只使用数字数据我没有问题,如果使用 numpy 并直接设置 feature_type 会出现同样的问题。

下面的玩具示例显示了我收到的错误。任何关于我做错了什么的建议将不胜感激!

<kbd>import numpy as np
import pandas as pd
import xgboost as xgb

X1 = [0, 2, 3, 1, 4, 5]
X2 = np.random.rand(6)
X3 = np.random.rand(6)*2
X = pd.DataFrame(data=np.column_stack((X1, X2, X3)), columns=['A', 'B', 'C'])
X['A'] = X['A'].astype('category')
X[['B', 'C']] = X[['A', 'B']].astype('float')
y = pd.DataFrame(data=np.random.rand(6)).astype('float')

XGBParams = {'booster': 'gbtree'}
d = xgb.DMatrix(X, label=y, missing=np.NaN, enable_categorical=True)
model = xgb.train(XGBParams, d,  num_boost_round=20, verbose_eval=True)
print(model.trees_to_dataframe())
xgboost categorical-data
© www.soinside.com 2019 - 2024. All rights reserved.