在 scikit-learn 中,可以在多类问题上训练一棵树,并使用 apply() 来输出叶子。它执行标准的普通多类分类(不是 OvR),并将返回一个 Nx1 向量,显示每个输入一个叶子。
但是当我尝试在 XGBoost 中使用 来执行此操作时n_estimators=1
,XGBoost 似乎正在为每个类训练一个单独的树。
iris = datasets.load_iris()
X = iris.data
y = iris.target
my_tree = XGBClassifier(objective="multi:softmax", n_estimators=1)
my_tree.fit(X, y)
leaves = my_tree.apply(X)
print(leaves.shape)
返回(150, 3)
。
有什么方法可以让 XGBoost 使用一棵树进行普通多类分类?