我用lightbgm来预测一个二进制:分类问题。 但我无法得到二进制预测[0;1]
从文档中,我认为参数的目标是:二进制用于二进制预测,交叉熵用于概率预测。你知道吗
d_train = lgb.Dataset(train_X[features], label=train_y,categorical_feature=Cat_columns)
d_valid = lgb.Dataset(val_X[features], label=val_y,categorical_feature=Cat_columns)
params = {
'objective':'binary',
'boosting':'goss',
'metric': 'binary_error',
'learning_rate': 0.1,
'num_leaves': 31,
'max_depth': 9,
'min_data_in_leaf': 20,
'max_delta_step': 0,
'device_type':'cpu',
'verbosity':1}
Model2 = lgb.train(params, d_train,categorical_feature=Cat_columns, num_boost_round =10, valid_sets=[d_train,d_valid],feval=None,early_stopping_rounds=50)
Model2.predict(train_X[features])
array([0.00510775, 0.00510775, 0.00510775, ..., 0.00510775, 0.00510775,
0.0319719 ])
模型总是给我一个概率数组,我找不到任何设置来得到一个二进制预测。你知道吗
基于LightGBMdocumentation, 我不认为你可以直接从LightGBM得到预测类。当然,默认的预测是预测概率。你知道吗
可以使用阈值将概率转换为类。 现在,决定一个阈值是很棘手的,这取决于你要解决的问题的性质,以及训练数据中不平衡的程度。你知道吗
对于高度不平衡的数据集,使用标准0.5作为阈值是不正确的。你知道吗
现在,回到您最初的疑问,设置参数objective:'binary',只通知模型关于问题的种类,在本例中是在二进制分类中。 这将要求目标变量为{0,1}。你知道吗
有关LightGBM参数的更多信息,请参阅下面的document。你知道吗
希望这有帮助。你知道吗
祝你今天愉快。你知道吗
相关问题 更多 >
编程相关推荐