对于一个项目,我正在使用带有 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'。遗憾的是这没有帮助。
model.predict
。 所以你需要做的就是稍微改变一下代码,如下所示:
pred = np.argmax(model.predict(X_test), axis=1)
print(accuracy_score(labels, pred))
pred
将存储具有最大概率的类别,最后使用
accuracy_score
打印准确性。我希望这有帮助:)