XGBoost с мультилейблом

Я пытаюсь использовать этот подход https://stackoverflow.com/a/44117716/11102206 для прогнозирования 24 переменных, но Я получаю сообщение об ошибке ValueError: целевые данные с несколькими выходами не поддерживаются при бинаризации меток. Любая помощь

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)

person user11102206    schedule 23.07.2019    source источник
comment
Можете ли вы предоставить данные (формат) y_train/y_val?   -  person Zealseeker    schedule 23.07.2019
comment
Привет, Zealseeker, это pandas.core.frame.DataFrame.   -  person user11102206    schedule 23.07.2019
comment
Нет. Я просто боялся, что вы не отличаете мультикласс от мультилейбла. Я предполагаю, что ваш y одного образца похож на [2,4] или [0,1,0,1,...]. Это мульти-лейбл. Пожалуйста, посмотрите мой ответ   -  person Zealseeker    schedule 23.07.2019
comment
Это Multilabel , но из того, что я видел, OneVsRest можно использовать и для проблем с Multilabel , но я уверен, что делаю здесь какую-то глупость, я вообще не разбираюсь в этом. Но все равно спасибо...   -  person user11102206    schedule 24.07.2019


Ответы (1)


Multi-class отличается от Multi-label. Первый заключается в том, что один образец имеет только одну метку, которая может быть от 0 до k (k>1). И последнее заключается в том, что один образец может иметь более одной метки, например. y=[1,3].

Упомянутый вами модуль мультикласса используется для преобразования бинарной классификации в мультиклассификацию, но он не может решить проблемы с несколькими метками.

Я предлагаю вам просмотреть https://scikit-learn.org/stable/modules/multiclass.html, чтобы увидеть, какие алгоритмы поддерживают мульти-метки.

Кроме того, я хотел бы представить еще один пакет, scikit-multilearn (http://scikit.ml/index.html), который основан на sklearn и похож на него. Но он предназначен для решения проблем с несколькими метками.

Есть несколько способов преобразовать задачи с несколькими метками в задачи с несколькими классификациями. Поэтому, пожалуйста, сначала посмотрите учебник, а затем решите, какой алгоритм использовать.

person Zealseeker    schedule 23.07.2019