Xg boost用于多标记分类?
是否可以使用xgboost进行多标签分类? 现在我使用Sklearn的GradientBoostingClassifier上的OneVsRestClassifier。 它的工作原理,但只使用我的CPU中的一个核心。 在我的数据中,我有45个特征,其任务是用二进制(布尔)数据预测大约20列。 公制是平均精度(地图@ 7)。 如果你有一个简短的代码示例,它将成为...
有几种方法可以做到这一点,其中之一就是您已经提出的方法:
1。
from xgboost import XGBClassifier
from sklearn.multiclass import OneVsRestClassifier
# If you want to avoid the OneVsRestClassifier magic switch
# from sklearn.multioutput import MultiOutputClassifier
clf_multilabel = OneVsRestClassifier(XGBClassifier(**params))
clf_multilabel
将适合每一个类二元分类,它将使用在指定然而,许多核心params
(仅供参考,你还可以指定n_jobs
在OneVsRestClassifier
,但吃了更多的内存)。
2.如果您首先通过为k
个具有k
正确标签的每个数据点制作k
副本来首先处理数据,那么您可以通过更简单的多类问题来解决问题。 那时,就是
clf = XGBClassifier(**params)
clf.fit(train_data)
pred_proba = clf.predict_proba(test_data)
获得每个班级的分类边界/概率,并确定您想要预测标签的阈值。 请注意,该解决方案并不精确:如果某个产品具有标签(1, 2, 3)
,则会为每个类别人为地引入两个否定样本。