python lightgbm使用

前言:

    之前在做信贷逾期的项目,使用了xgboost模型,详细内容在之前的文章中。

    现在在做电信诈骗的项目,本项目需要提供的用户数据信息判断是否诈骗信息,和信贷逾期的项目相似,本质上是一个二分类的问题,只是数据的处理方式有些区别。分别使用xgboost模型,lightgbm模型进行预测。实验效显示,lightgbm模型的效果优于xgboost模型,在此记录lightgbm模型。

心得体会:

     在参数是正常范围内的前提下,模型调参,不会显著模型的预测的结果。个人认为,解决方案大致有两个:1.更换模型,或许当前使用的模型并不是最合适数据集的模型,多换一换其他类型的模型,如随机森林等。2.选取更好数据特征进行训练,选取好的数据特征可以显著提高预测结果。 

      总而言之,好数据加好模型才会得到最好的预测结果。

1.数据清洗

      根据数据特点,对表格进行数据清洗,比如去除空值,去除重复值,或者缺失值用中位数进行补充等。 需要注意的是,需要将数据归一化处理。在归一化处理之后,预测结果会提高,效果更好。

2.划分数据X,Y

    本次为监督学习,X为数据特征,即feature,Y为target, 即是否诈骗的结果。诈骗为1,否则为0。

3.划分训练集和测试集

#需要导入包
from sklearn.model_selection import train_test_split
#划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(feature, target, test_size=0.2)

4使用lightgbm模型进行预测

import lightgbm as lgb

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference = lgb_train)
#lightgbm模型参数设置,根据自己的需求调一调
params = {
    'task':'train',
    'boosting_type':'gbdt',
    'objective':'binary',
    'metric':{'12','auc','binary_logloss'},
    'num_leaves':40,
    'learning_rate':0.05,
    'feature_fraction':0.9,
    'bagging_fraction':0.8,
    'bagging_freq':5,
    'verbose':0,
    'is_unbalance':True
      
}
#训练参数设置
gbm = lgb.train(params,lgb_train,num_boost_round=1000,valid_sets=lgb_eval,early_stopping_rounds=100)

5模型预测

     第4步得到训练好的模型,现在可以输入格式相同的X,即feature,就可以使用模型预测了。以X_test为例。

lgb_pre = gbm.predict(X_test) #括号中需要输入与训练时相同的数据格式

6结果评估

   比较预测的结果和真实的结果,评估模型的好坏。

from sklearn.metrics import roc_auc_score
auc_score = roc_auc_score(y_test, lgb_pre)

7模型保存与加载

   将训练好的模型进行保存,在需要使用的地方直接加载模型,不需要重新训练

#模型保存
gbm.save_model('model.txt')
#模型加载
import lightgbm as lgb
gbm = lgb.Booster(model_file = 'model.txt')

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值