8

カスタムメトリックでlgbモデルをトレーニングしたい:平均f1_scoreで。weighted

ここで lightgbm の高度な例を調べたところ、カスタム バイナリ エラー関数の実装が見つかりました。以下に示すように、f1_scoreを返す同様の関数として実装しました。

def f1_metric(preds, train_data):

    labels = train_data.get_label()

    return 'f1', f1_score(labels, preds, average='weighted'), True

以下に示すように、fevalパラメーターを渡してモデルをトレーニングしようとしました。f1_metric

evals_results = {}

bst = lgb.train(params, 
                     dtrain, 
                     valid_sets= [dvalid], 
                     valid_names=['valid'], 
                     evals_result=evals_results, 
                     num_boost_round=num_boost_round,
                     early_stopping_rounds=early_stopping_rounds,
                     verbose_eval=25, 
                     feval=f1_metric)

それから私は得ていますValueError: Found input variables with inconsistent numbers of samples:

検証セットではなく、トレーニング セットが関数に渡されています。

検証セットが渡され、f1_score が返されるように構成するにはどうすればよいですか?

4

2 に答える 2