【集成学习】lightgbm使用案例
1 #!/usr/bin/env python2
2 # -*- coding: utf-8 -*-
3 """
4 Created on Sat Mar 31 21:19:09 2018
5
6 @author: hello4720
7 """
8 import numpy as np
9 import pandas as pd
10 import lightgbm as lgb
11 from sklearn import metrics
12 from sklearn.model_selection import train_test_split
13
14 ### 读取数据
15 print("载入数据")
16 dataset1 = pd.read_csv('G:/ML/ML_match/IJCAI/data3.22/3.22ICJAI/data/7_train_data1.csv')
17 dataset2 = pd.read_csv('G:/ML/ML_match/IJCAI/data3.22/3.22ICJAI/data/7_train_data2.csv')
18 dataset3 = pd.read_csv('G:/ML/ML_match/IJCAI/data3.22/3.22ICJAI/data/7_train_data3.csv')
19 dataset4 = pd.read_csv('G:/ML/ML_match/IJCAI/data3.22/3.22ICJAI/data/7_train_data4.csv')
20 dataset5 = pd.read_csv('G:/ML/ML_match/IJCAI/data3.22/3.22ICJAI/data/7_train_data5.csv')
21
22 dataset1.drop_duplicates(inplace=True)
23 dataset2.drop_duplicates(inplace=True)
24 dataset3.drop_duplicates(inplace=True)
25 dataset4.drop_duplicates(inplace=True)
26 dataset5.drop_duplicates(inplace=True)
27
28 ### 数据合并
29 print("数据合并")
30 trains = pd.concat([dataset1,dataset2],axis=0)
31 trains = pd.concat([trains,dataset3],axis=0)
32 trains = pd.concat([trains,dataset4],axis=0)
33
34 online_test = dataset5
35
36 ### 数据拆分
37 print("数据拆分")
38 train_xy,offline_test = train_test_split(trains, test_size = 0.2,random_state=21)
39 train,val = train_test_split(train_xy, test_size = 0.2,random_state=21)
40
41 print("训练集")
42 y = train.is_trade # 训练集标签
43 X = train.drop(['instance_id','is_trade'],axis=1) # 训练集特征矩阵
44
45 print("验证集")
46 val_y = val.is_trade # 验证集标签
47 val_X = val.drop(['instance_id','is_trade'],axis=1) # 验证集特征矩阵
48
49 print("测试集")
50 offline_test_X=offline_test.drop(['instance_id','is_trade'],axis=1) # 线下测试特征矩阵
51 online_test_X=online_test.drop(['instance_id'],axis=1) # 线上测试特征矩阵
52
53 ### 数据转换
54 lgb_train = lgb.Dataset(X, y, free_raw_data=False)
55 lgb_eval = lgb.Dataset(val_X, val_y, reference=lgb_train,free_raw_data=False)
56
57 ### 开始训练
58 print('设置参数')
59 params = {
60 'boosting_type': 'gbdt',
61 'boosting': 'dart',
62 'objective': 'binary',
63 'metric': 'binary_logloss',
64
65 'learning_rate': 0.01,
66 'num_leaves':25,
67 'max_depth':3,
68
69 'max_bin':10,
70 'min_data_in_leaf':8,
71
72 'feature_fraction': 0.6,
73 'bagging_fraction': 1,
74 'bagging_freq':0,
75
76 'lambda_l1': 0,
77 'lambda_l2': 0,
78 'min_split_gain': 0
79 }
80
81 print("开始训练")
82 gbm = lgb.train(params, # 参数字典
83 lgb_train, # 训练集
84 num_boost_round=2000, # 迭代次数
85 valid_sets=lgb_eval, # 验证集
86 early_stopping_rounds=30) # 早停系数
87 ### 线下预测
88 print ("线下预测")
89 preds_offline = gbm.predict(offline_test_X, num_iteration=gbm.best_iteration) # 输出概率
90 offline=offline_test[['instance_id','is_trade']]
91 offline['preds']=preds_offline
92 offline.is_trade = offline['is_trade'].astype(np.float64)
93 print('log_loss', metrics.log_loss(offline.is_trade, offline.preds))
94
95 ### 线上预测
96 print("线上预测")
97 preds_online = gbm.predict(online_test_X, num_iteration=gbm.best_iteration) # 输出概率
98 online=online_test[['instance_id']]
99 online['preds']=preds_online
100 online.rename(columns={'preds':'predicted_score'},inplace=True)
101 online.to_csv("./data/20180405.txt",index=None,sep=' ')
102
103 ### 保存模型
104 from sklearn.externals import joblib
105 joblib.dump(gbm,'gbm.pkl')
106
107 ### 特征选择
108 df = pd.DataFrame(X.columns.tolist(), columns=['feature'])
109 df['importance']=list(gbm.feature_importance())
110 df = df.sort_values(by='importance',ascending=False)
111 df.to_csv("./data/feature_score_20180405.csv",index=None,encoding='gbk')
【集成学习】lightgbm使用案例的更多相关文章
- 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting
本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树 ...
- 使用sklearn进行集成学习——实践
系列 <使用sklearn进行集成学习——理论> <使用sklearn进行集成学习——实践> 目录 1 Random Forest和Gradient Tree Boosting ...
- [转]使用sklearn进行集成学习——实践
转:http://www.cnblogs.com/jasonfreak/p/5720137.html 目录 1 Random Forest和Gradient Tree Boosting参数详解2 如何 ...
- 集成学习之Boosting —— AdaBoost原理
集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...
- 集成学习算法汇总----Boosting和Bagging(推荐AAA)
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- 集成学习二: Boosting
目录 集成学习二: Boosting 引言 Adaboost Adaboost 算法 前向分步算法 前向分步算法 Boosting Tree 回归树 提升回归树 Gradient Boosting 参 ...
- 6. 集成学习(Ensemble Learning)算法比较
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- 3. 集成学习(Ensemble Learning)随机森林(Random Forest)
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- 集成学习之Boosting —— XGBoost
集成学习之Boosting -- AdaBoost 集成学习之Boosting -- Gradient Boosting 集成学习之Boosting -- XGBoost Gradient Boost ...
- 集成学习之Boosting —— Gradient Boosting原理
集成学习之Boosting -- AdaBoost原理 集成学习之Boosting -- AdaBoost实现 集成学习之Boosting -- Gradient Boosting原理 集成学习之Bo ...
随机推荐
- BZOJ 2761: [JLOI2011]不重复数字 hash哈希
题目就不贴了 点我看题 题意:这题题意很简明,就是给一个序列,把序列里相同的删掉,然后输出,按原数列顺序. 思路:这题之前QZZ和ZN大神犇叫我去做,辣时还不会hash,就留着了.最近某夏令营学会了h ...
- 爬虫之Fiddler抓取HTTPS设置
Fiddler抓取HTTPS设置 启动Fiddler,打开菜单栏中的 Tools > Telerik Fiddler Options,打开“Fiddler Options”对话框. 对Fiddl ...
- swagger2 坑 记录
swagger2 只认 @RequestMapping 注解! 不认@RestController 注解 @RestController @RequestMapping(value = "/ ...
- spring boot2.1读取 apollo 配置中心1
第一篇:搭建apollo配置中心 为什么选择apollo,我做了一些对比: Diamond Disconf Apollo Spring Cloud Config 数据持久性 mysql mysql ...
- C# winfrom listview 多窗口调用
Form1 private void button1_Click(object sender, EventArgs e) { Form f = new Form2(ref listView1); f. ...
- [Vue]组件——实现动态组件:keep-alive的使用
1.在app.vue中用一个 <keep-alive> 元素将其动态组件包裹起来: keepAlive为true时,第一次被创建的时候缓存下来,为false时,不会缓存 <keep- ...
- pandas的常用函数
1.DataFrame的常用函数: (1)np.abs(frame) 绝对值, (2)apply function, lambda f= lambda x: x.max()-x.min(),frame ...
- HDU - 59562016ACM/ICPC亚洲区沈阳站I - The Elder 树上斜率优化dp
题意:给定上一棵树,然后每条边有一个权值,然后每个点到 1 的距离有两种,第一种是直接回到1,花费是 dist(1, i)^2,还有另一种是先到另一个点 j,然后两从 j 向1走,当然 j 也可以再向 ...
- Less开发指南(二)- 基本语法
(一)嵌套规则 [1]less可以让我们以嵌套的方式编写层叠样式,先看下面这段CSS: .box-a .hd { height: 20px; } .box-a .bd .txt { color: #0 ...
- Highcharts 3D柱形图;Highcharts 堆叠3D柱形图;Highcharts 3D饼图;Highcharts 3D圆环图
Highcharts 3D柱形图 配置 chart.options3d 配置 以下列出了 3D 图的基本配置,设置 chart 的 type 属性为 column,options3d 选项可设置三维效 ...