Обратные метки с горячим кодированием в XGBoost? - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь распечатать оценку точности для многозначного классификатора XGBoost. Однако я застрял на этой ошибке:

ValueError: метрики классификации не могут обрабатывать сочетание многозначных индикаторов и двоичных целей

Я думаю y_test не требует быстрого кодирования при передаче в accuracy_score()? Но все, что я пробовал, порождает больше ошибок. Есть идеи, как мне заставить это работать?

Код:

        X = X.reshape(X.shape[0], -1)
        print(X.shape)


        # Split the dataset
        x_train, x_test, y_train, y_test = train_test_split(X, yy, test_size=0.2, random_state=42, stratify=y)

        dtrain = xgb.DMatrix(data=x_train, label=y_train)
        dtest = xgb.DMatrix(data=x_test, label=y_test)
        eval_list = [(dtest, 'eval')]

        # Train the model
        params = {
            'max_depth': 3,
            'objective': 'multi:softmax', 
            'num_class': 3,
            'tree_method':'gpu_hist'
        }

        # Train the model
        model = xgb.train(params, dtrain, evals=eval_list, early_stopping_rounds=20, verbose_eval=True)

        # Evaluate predictions
        y_pred = model.predict(dtest)
        predictions = [round(value) for value in y_pred]
        accuracy = accuracy_score(y_test, predictions)
        print("Accuracy: %.2f%%" % (accuracy * 100.0))

1 Ответ

0 голосов
/ 18 июня 2020

Добавление argmax к y_test казалось, работает:

accuracy = accuracy_score(y_test.argmax(axis=1), predictions)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...