我有一个.csv文件,其中包含一个我想与XGBoost和SageMaker一起使用的数据集。这个
data.csv文件的结构有7列。L1、L2、L3、L4、L5、L6,类型。“类型”列有5种类型的字符串,我将使用它们来对推断进行分类。
以下是我的数据转换及其结果:
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data_r['Type'] = le.fit_transform(data_r['Type'])
data_r['Type']
0 4
1 4
2 4
3 4
....
300 0
301 0
...
1983 3
....
2300 2
2600 1
正如您所看到的,分类特征是用值0,1,2,3,4编码的
我现在把它移到第一列:
data_r = data_r[['Type', 'L1', 'L2', 'L3', 'L4', 'L5', 'L6' ]]
data_r.head()
Type, L1, L2, L3, L4, L5, L6
0 4 1 45 32 19 -3 8
1 4 34 95 -45 9 2 45
2 4 0 5 -3 27 -2 1
3 4 10 15 -13 7 0 38
4 4. 78 1 0 43 45 57
然后,我将数据划分为训练、验证和测试,并将其上传到S3。
我还有一个有效的会话和xgb估计器。然后我创建超参数,如下所示:
xgb.set_hyperparameters(
max_depth=5,
eta=0.2,
gamma=4,
min_child_weight=6,
subsample=0.8,
objective='multi:softmax',
num_class=4,
early_stopping_rounds=10,
num_round=100
)
但我得到了一个错误:
SoftMaxMultiClassObj: label must be in [0, num_class).
此代码或数据转换有什么问题?