我正在LightGbm(Scikit learn API)中处理一个二进制分类问题,在理解如何包含样本权重时遇到了问题。我的代码现在看起来像这样
classifier = LGBMClassifier(n_estimators=100, learning_rate = 0.1, num_leaves = 15) classifier.fit(X_train, y_train, sample_weight = w_train, eval_set = (X_val, y_val))
在这里 w_train 是一个numpy数组,与y_train的维数相同。但我需要LightGbm在验证集上也使用样本权重,所以我设置 eval_sample_weight 在 fit 作用我希望这也是一个数组 w_val (尺寸与 y_val ),但我从文档中看到,这是一个数组列表。我找不到任何使用这个的例子,所以我很难理解为什么。据我所知,这应该只是验证集中每个元素的权重。数组列表:这是否意味着每个样本有多个权重?有人能解释一下吗?
w_train
eval_sample_weight
fit
w_val
y_val
这是我自己想出来的。LightGbm接受验证集列表。当然,它也接受权重列表。每个验证集的一组权重。
Petter T 是的,它应该是一个数组列表,每个数组对应于每个数组 eval_set . 所以代码应该如下所示:
eval_set
classifier.fit(X_train, y_train, sample_weight = w_train, eval_set = (X_val, y_val), eval_sample_weight = [w_val])
如前所述, w_val 形状等于物体的形状 y_val .