カスタムメトリックで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 が返されるように構成するにはどうすればよいですか?