python继承分类_python – LightGBM的多类分类

我正在尝试使用

Python中的LightGBM为多类分类问题(3个类)建模分类器.我使用了以下参数.

params = {'task': 'train',

'boosting_type': 'gbdt',

'objective': 'multiclass',

'num_class':3,

'metric': 'multi_logloss',

'learning_rate': 0.002296,

'max_depth': 7,

'num_leaves': 17,

'feature_fraction': 0.4,

'bagging_fraction': 0.6,

'bagging_freq': 17}

数据集的所有分类特征都使用LabelEncoder进行标签编码.我使用eartly_stopping运行cv后训练模型,如下所示.

lgb_cv = lgbm.cv(params, d_train, num_boost_round=10000, nfold=3, shuffle=True, stratified=True, verbose_eval=20, early_stopping_rounds=100)

nround = lgb_cv['multi_logloss-mean'].index(np.min(lgb_cv['multi_logloss-mean']))

print(nround)

model = lgbm.train(params, d_train, num_boost_round=nround)

训练结束后,我用这样的模型进行预测,

preds = model.predict(test)

print(preds)

我有一个嵌套数组作为这样的输出.

[[ 7.93856847e-06 9.99989550e-01 2.51164967e-06]

[ 7.26332978e-01 1.65316511e-05 2.73650491e-01]

[ 7.28564308e-01 8.36756769e-06 2.71427325e-01]

...,

[ 7.26892634e-01 1.26915179e-05 2.73094674e-01]

[ 5.93217601e-01 2.07172044e-04 4.06575227e-01]

[ 5.91722491e-05 9.99883828e-01 5.69994435e-05]]

由于preds中的每个列表代表类概率,我使用np.argmax()来查找类似这样的类.

predictions = []

for x in preds:

predictions.append(np.argmax(x))

在分析预测时,我发现我的预测仅包含2个类 – 0和1.类2是训练集中的第2大类,但在预测中无处可寻.在评估结果时,它给出了大约78个% 准确性.

那么,为什么我的模型没有预测任何一个案例的第2类.我使用的参数有什么不对吗?

这不是模型进行解释预测的正确方法吗?我应该对参数进行任何更改吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值