无法从 LightGBM 中重现 L1 分数

ignoring_gravity

当我在提前停止的情况下运行 LGBM 时,它会给出与其最佳迭代相对应的分数。

当我尝试自己重现这些分数时,我得到了不同的数字。

import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
import pandas as pd
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import KFold


data = load_breast_cancer()
X = pd.DataFrame(data.data)
y = pd.Series(data.target)

lgb_params =  {'boosting_type': 'dart', 'random_state': 42}

folds = KFold(5)

for train_idx, val_idx in folds.split(X):
    X_train, X_valid = X.iloc[train_idx], X.iloc[val_idx]
    y_train, y_valid = y.iloc[train_idx], y.iloc[val_idx]
    model = lgb.LGBMRegressor(**lgb_params, n_estimators=10000, n_jobs=-1)
    model.fit(X_train, y_train,
              eval_set=[(X_valid, y_valid)],
              eval_metric='mae', verbose=-1, early_stopping_rounds=200)
    y_pred_valid = model.predict(X_valid)
    print(mean_absolute_error(y_valid, y_pred_valid))

我期待着

valid_0's l1: 0.123608

将与我自己的计算相匹配mean_absolute_error,但事实并非如此。事实上,这是我输出的顶部:

Training until validation scores don't improve for 200 rounds.
Early stopping, best iteration is:
[631]   valid_0's l2: 0.0515033 valid_0's l1: 0.123608
0.16287265537021847

我正在使用 lightgbm 的“2.2.1”版本。

弗洛里安·穆特尔

如果您更新 LGBM 版本,您将获得

“用户警告:在飞镖模式下无法提前停止”

有关详细信息,请参阅此问题您可以做的是使用最佳数量的提升轮重新训练模型。

results = model.evals_result_['valid_0']['l1']
best_perf = min(results)
num_boost = results.index(best_perf)
print('with boost', num_boost, 'perf', best_perf)    
model = lgb.LGBMRegressor(**lgb_params, n_estimators=num_boost+1, n_jobs=-1)
model.fit(X_train, y_train, verbose=-1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法简化Java中的分数

来自分类Dev

您可以在LightGBM.train()中访问每个提升回合的分数吗?

来自分类Dev

LightGBM模型以不同的参数返回相同的分数

来自分类Dev

无法在输出中获取正确的分数值

来自分类Dev

无法在输出中获取正确的分数值

来自分类Dev

无法在JavaScript测验中显示最终分数

来自分类Dev

无法在HTML Canvas中更新分数的功能之外的其他功能中使用更新分数

来自分类Dev

碰撞检测无法将分数加1

来自分类Dev

无法在python中动态更改变量(分数)

来自分类Dev

lmbench如何使用C测量L1和L2缓存延迟?(无法理解手册中的说明)

来自分类Dev

lmbench如何使用C测量L1和L2缓存延迟?(无法理解手册中的说明)

来自分类Dev

无法重现使用OpenCV中的HoughLines for python的示例

来自分类Dev

MATLAB中的L1范数轮廓图

来自分类Dev

在scikit-learn中对LogisticRegressionCV()使用l1惩罚

来自分类Dev

无法使用 SharedPreferences 保存分数

来自分类Dev

Nvidia视觉分析器中L1本地存储/ L1全局读取的含义

来自分类Dev

python中的共识分数和WSP分数

来自分类Dev

正确计算Sklearn中的F1分数

来自分类Dev

无法重现android崩溃

来自分类Dev

lightgbm.Booster中缺少的方法

来自分类Dev

阵列中每年的分数

来自分类Dev

c中的移位分数

来自分类Dev

C ++中的分数加法

来自分类Dev

Python中的字母分数

来自分类Dev

比较字典中的分数

来自分类Dev

减少 C 中的分数

来自分类Dev

Python 中的逆分数

来自分类Dev

在分数中实现“,”

来自分类Dev

ValueError:无法将拆分数n_splits = 3大于样本数:1