python - 如何解决 XGBoost SoftmaxMultiClassObj : label must be in [0, num_class) 错误?

标签 python machine-learning xgboost

我正在使用 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)

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

最佳答案

当目标特征中的标签多于 num_class 参数中提到的标签时,就会出现此错误。

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

关于python - 如何解决 XGBoost SoftmaxMultiClassObj : label must be in [0, num_class) 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60645163/

相关文章:

python - 有任何 Python 的 AOP 支持库吗?

python - 如何在长时间运行的进程中运行 coverage.py?

javascript - 为什么要区分单行注释和多行注释?

python - 正确安装后xgboost属性不起作用

python - 将两个字符串与 'is' 进行比较——未按预期执行

python - 使用 nnet_ts 模块中的 TimeSeriesNnet() 方法会抛出 NameError

python - 反向传播的扩展

python - Pandas:从 DataFrame 列制作字典的最有效方法

python - 将 XGBoost 的 xgb.train 的输出保存为带有 python 日志记录的日志文件

r - 无法将 xgb.DMatrix 传递给插入符