ValueError:分类指标无法处理连续和多类目标的混合(XGBoost)

问题描述 投票:0回答:1

对于一个项目,我正在使用带有 XGBoost 的分类器。这是部分代码:

import ...

tab = 'tab.csv'
datasset = read_csv(tab, decimal=".")

target_attribute = dataset['AVG']

a = random.randrange(1, 1000)
seed = a
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(dataset, target_attribute, test_size=test_size,
                                                        random_state=seed)

X_train = np.array(X_train)
X_test = np.array(X_test)
X_train = X_train.astype(float)
X_test = X_test.astype(float)

model = XGBClassifier()
model.fit(X_train, y_train)

print(model)

y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]

accuracy = accuracy_score(y_test, predictions)

print("Accuracy: %.2f%%" % (accuracy * 100.0))

一旦我使用某个 target_attribute,我就会收到以下错误:

ValueError:分类指标无法处理连续和多类目标的混合

我正在使用分类,所以到目前为止我的互联网搜索并没有真正帮助解决这个问题。我认为问题可能在于 .csv 的这一列中的值既是整数又是实数。我不知道如何解决这个问题。我希望这里有人可以帮助我。

编辑:

我已经尝试强制所有 dtype == 'int64' 的列为 dtype == 'float64'。遗憾的是这没有帮助。

python xgboost xgbclassifier
1个回答
0
投票
model.predict

。 所以你需要做的就是稍微改变一下代码,如下所示:

pred = np.argmax(model.predict(X_test), axis=1)
print(accuracy_score(labels, pred))

pred

将存储具有最大概率的类别,最后使用

accuracy_score
打印准确性。
我希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.