前言:

    之前在做信贷逾期的项目,使用了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')

技术
©2019-2020 Toolsou All rights reserved,
Python学习笔记(一)Linux【shell】 shell编程创建一个线程——— Javaweb (3)evo工具使用问题——Degenerate covariance rank, Umeyama alignment is not possibleVMware 16安装centos 7详细教程C语言做一个简易的登陆验证(功能)界面C语言——qsort函数Spring Boot面试必问:自动配置原理Android EditText密码显示隐藏Qt入门教程【基础控件篇】QCalendarWidget日历控件