分类器模型:是否可以将 -1 的标签分配给 class?

Classifier model: is it possible to assign a label of -1 to a class?

我正在尝试训练光梯度增强机 class化算法 (LGBMClassifier)。我的数据中有三个 class,我给它们分配了 -1、0 和 1。这些标签具有特定的含义,所以我不想将它们更改为其他标签(如 0、1 和 2)。

当我尝试训练模型时,收到以下错误消息:

Label must be in [0, 3), but found -1 in label

要求如果我有三个标签,必须指定0,1和2?

更新#1

感谢JST99,这是正确的做法。我如下定义它并且它工作正常。请注意,当您 运行 预测时,输出是一个长度为 n_classes 的概率向量,如果您使用 np.argmax 将其转换为概率最高的 class ,您将classes 的范围从 0 到 n(即你必须注意将其转换回原来的 classes,在我的例子中是 [-1,0,1])。

hyperparameter_dictionary = {'task': 'train',
                            'boosting_type': 'gbdt',
                            'objective': 'multiclass',
                            'metric': 'multi_logloss',
                            'num_leaves': 100,
                            'learning_rate': 0.05,
                            'feature_fraction': 0.9,
                            'bagging_fraction': 0.9,
                            'bagging_freq': 0,
                            'verbose': -1,
                            'num_class': 3,
                            'classes': [-1, 0, 1]
                            }
model = lgb.LGBMClassifier(**hyperparameter_dictionary)
model.fit(X,y)

根据docs,您可以在初始化分类器时指定额外的kwarg参数classes。具体来说,classes属于

Type: array of shape = [n_classes]

因此,我们可以尝试

clf = lightgbm.LGBMClassifier(..., classes=[-1, 0, 1])