如何解决XGBoost SoftmaxMultiClassObj:标签必须在[0,num_class)错误中?

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

我正在使用XGBoost构建模型,以根据省和地区代码预测日冕病毒感染。数据集:https://www.kaggle.com/sudalairajkumar/covid19-in-italy

我已经分割了数据,但是当我尝试建立模型时,出现以下错误:

XGBoostError: [16:16:15] C:/Users/Administrator/workspace/xgboost- 
win64_release_1.0.0/src/objective/multiclass_obj.cu:115: 
SoftmaxMultiClassObj: label must be in [0, num_class).

代码如下:

train = df[['RegionCode','ProvinceCode']].astype(int)
test = df['TotalPositiveCases'].astype(int)
X_test, X_train, y_test, y_train = train_test_split(train, test, 
test_size=0.30, random_state=42)

train = xgb.DMatrix(X_train, label=y_train)
test = xgb.DMatrix(X_test, label=y_test)

param = {
'max_depth':4,
'eta':0.3,
'objective': 'multi:softmax',
'num_class': 3}
epochs = 10

model = xgb.train(param, train, epochs)

模型属性是我得到错误的地方

python machine-learning xgboost
1个回答
0
投票

当目标要素中的标签数量超过num_class参数中提到的数量时,就会出现此错误。

您应该检查目标是否具有比num_class参数更多的功能,或者您可以做的是打印target.unique(),因为数据中可能有一些空值或NAN。

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