如何将 XGBClassifier/XGBRegressor 模型分割成子模型?
How to slice a XGBClassifier/XGBRegressor model into sub-models?
This document 显示 XGBoost API 训练的模型可以通过以下代码进行切片:
from sklearn.datasets import make_classification
import xgboost as xgb
booster = xgb.train({
'num_parallel_tree': 4, 'subsample': 0.5, 'num_class': 3},
num_boost_round=num_boost_round, dtrain=dtrain)
sliced: xgb.Booster = booster[3:7]
我试过了,成功了。
由于 XGBoost 提供了 Scikit-Learn Wrapper 接口,我尝试了这样的操作:
from xgboost import XGBClassifier
clf_xgb = XGBClassifier().fit(X_train, y_train)
clf_xgb_sliced: clf_xgb.Booster = booster[3:7]
但出现以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-18-84155815d877> in <module>
----> 1 clf_xgb_sliced: clf_xgb.Booster = booster[3:7]
AttributeError: 'XGBClassifier' object has no attribute 'Booster'
由于 XGBClassifier 没有属性 'Booster',是否有任何方法可以对 Scikit-Learn Wrapper 接口训练的 XGBClassifier(/XGBRegressor) 模型进行切片?
问题在于您提供的类型提示 clf_xgb.Booster
与现有参数不匹配。尝试:
clf_xgb_sliced: xgb.Booster = clf_xgb.get_booster()[3:7]
相反。
This document 显示 XGBoost API 训练的模型可以通过以下代码进行切片:
from sklearn.datasets import make_classification
import xgboost as xgb
booster = xgb.train({
'num_parallel_tree': 4, 'subsample': 0.5, 'num_class': 3},
num_boost_round=num_boost_round, dtrain=dtrain)
sliced: xgb.Booster = booster[3:7]
我试过了,成功了。
由于 XGBoost 提供了 Scikit-Learn Wrapper 接口,我尝试了这样的操作:
from xgboost import XGBClassifier
clf_xgb = XGBClassifier().fit(X_train, y_train)
clf_xgb_sliced: clf_xgb.Booster = booster[3:7]
但出现以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-18-84155815d877> in <module>
----> 1 clf_xgb_sliced: clf_xgb.Booster = booster[3:7]
AttributeError: 'XGBClassifier' object has no attribute 'Booster'
由于 XGBClassifier 没有属性 'Booster',是否有任何方法可以对 Scikit-Learn Wrapper 接口训练的 XGBClassifier(/XGBRegressor) 模型进行切片?
问题在于您提供的类型提示 clf_xgb.Booster
与现有参数不匹配。尝试:
clf_xgb_sliced: xgb.Booster = clf_xgb.get_booster()[3:7]
相反。