【问题标题】:XGBoost with MultilabelXGBoost 与多标签
【发布时间】:2019-12-01 15:33:19
【问题描述】:

我正在尝试使用此方法https://stackoverflow.com/a/44117716/11102206 预测 24 个变量,但我收到 ValueError: Multioutput target data is not supported with label binarization。任何帮助

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size = 0.2, random_state = 669)

params = {
'n_estimators': 10,
'max_depth': 8,

}

xgbc = xgb.XGBClassifier(**params)
ova_xgbc = OneVsRestClassifier(xgbc)
ova_xgbc.fit(X_train, y_train)

ova_preds = ova_xgbc.predict(X_val)

【问题讨论】:

  • 能否给出y_train/y_val的数据(格式)?
  • 嗨 Zealseeker 它是 pandas.core.frame.DataFrame
  • 没有。我只是怕你没有区分多类和多标签。我猜你的一个样本的 y 就像 [2,4] 或 [0,1,0,1,...]。它是多标签的。请看我的回答
  • 它是 Multilabel ,但据我所知 OneVsRest 也可以用于 Multilabel 问题,但我肯定在这里做了一些愚蠢的事情,我对此一无所知。不过还是谢谢你...

标签: python xgboost multilabel-classification


【解决方案1】:

多类不同于多标签。前者是一个样本只有一个标签,可以是0到k(k>1)。后者是一个样本可以有多个标签,例如y=[1,3].

你提到的multiclass模块是用来将二分类转为多分类的,但不能解决多标签问题。

我建议你浏览https://scikit-learn.org/stable/modules/multiclass.html,看看哪些算法支持多标签。

另外,我想介绍另一个包,scikit-multilearn (http://scikit.ml/index.html),它基于并类似于sklearn。但它是为解决多标签问题而设计的。

有几种方法可以将多标签问题转化为多分类。所以请先看一下教程,然后再决定使用什么算法。

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 2020-05-01
    • 2021-05-31
    • 1970-01-01
    • 2017-05-09
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    相关资源
    最近更新 更多