一、lightGBM处理回归问题

import pandas as pd
import numpy as np#final_data = new_boston
#labels = boston.target#在实践中数据集往往是一个dataFrame。
#这时可以使用
#final_data = all_data_df[feature_names].values
#labels = all_data_df['label'].values
#的方法。其中,feature_names为特征list,形如['age', 'salary', 'height']等print (type(final_data))
print (final_data.shape)print (type(labels))
print (labels.shape)# final_data、labels的类型如下:
# 输出:
# <class 'numpy.ndarray'>
# (506, 13)
# <class 'numpy.ndarray'>
# (506,)import lightgbm as lgb
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import KFold
import matplotlib.pyplot as plt
import seaborn as sns
import gc#用来释放内存
params = {'num_leaves': 100, #结果对最终效果影响较大,越大值越好,太大会出现过拟合'min_data_in_leaf': 100,'objective': 'regression', #定义的目标函数'max_depth': -1,'learning_rate': 0.05,"min_sum_hessian_in_leaf": 6,"boosting": "gbdt","feature_fraction": 0.8,  #提取的特征比率"bagging_freq": 1,"bagging_fraction": 0.85,"bagging_seed": 11,"lambda_l1": 0.01,             #l1正则'lambda_l2': 0.001,     #l2正则"verbosity": -1,"nthread": -1,                #线程数量,-1表示全部线程,线程越多,运行的速度越快'metric': {'mse'},#,'binary_error', 'binary_logloss',},  ##评价函数选择"random_state": 2021, #随机数种子,可以防止每次运行的结果不一致# 'device': 'gpu' ##如果安装的事gpu版本的lightgbm,可以加快运算}train_x_flat = final_data
train_y = labels
#features = final_data.columns
print(train_x_flat.shape, train_y.shape)folds = KFold(n_splits=5, shuffle=True, random_state=2019)
prob_oof = np.zeros((train_x_flat.shape[0], ))
# test_pred_prob = np.zeros((test.shape[0], ))## train and predict
num_round = 1500
feature_importance_df = pd.DataFrame()
for fold_, (trn_idx, val_idx) in enumerate(folds.split(train_x_flat)):print("fold {}".format(fold_ + 1))trn_data = lgb.Dataset(train_x_flat[trn_idx], label=train_y[trn_idx])val_data = lgb.Dataset(train_x_flat[val_idx], label=train_y[val_idx])clf = lgb.train(params,trn_data,num_round,valid_sets=[trn_data, val_data],verbose_eval=30,early_stopping_rounds=100)prob_oof[val_idx] = clf.predict(train_x_flat[val_idx], num_iteration=clf.best_iteration)#     fold_importance_df = pd.DataFrame()
#     fold_importance_df["Feature"] = features
#     fold_importance_df["importance"] = clf.feature_importance()
#     fold_importance_df["fold"] = fold_ + 1
#     feature_importance_df = pd.concat([feature_importance_df, fold_importance_df], axis=0)from sklearn import metrics
print(metrics.mean_squared_error(train_y, prob_oof))#

二、使用lightGBM处理二分类问题:

基本框架相同,区别在于修改了objective和metric

import pandas as pd
import numpy as npfinal_data = new_boston
labels = boston.targetprint (type(final_data))
print (final_data.shape)print (type(labels))
print (labels.shape)# final_data、labels的类型如下:
# 输出:
# <class 'numpy.ndarray'>
# (506, 13)
# <class 'numpy.ndarray'>
# (506,)import lightgbm as lgb
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import KFold
import matplotlib.pyplot as plt
import seaborn as sns
import gc#用来释放内存
params = {'num_leaves': 100, #结果对最终效果影响较大,越大值越好,太大会出现过拟合'min_data_in_leaf': 100,'objective': 'binary', #定义的目标函数'max_depth': -1,'learning_rate': 0.05,"min_sum_hessian_in_leaf": 6,"boosting": "gbdt","feature_fraction": 0.8,  #提取的特征比率"bagging_freq": 1,"bagging_fraction": 0.85,"bagging_seed": 11,"lambda_l1": 0.01,             #l1正则'lambda_l2': 0.001,     #l2正则"verbosity": -1,"nthread": -1,                #线程数量,-1表示全部线程,线程越多,运行的速度越快'metric': {'auc'},#,'binary_error', 'binary_logloss',},  ##评价函数选择"random_state": 2021, #随机数种子,可以防止每次运行的结果不一致# 'device': 'gpu' ##如果安装的事gpu版本的lightgbm,可以加快运算}train_x_flat = final_data
train_y = labels
#features = final_data.columns
print(train_x_flat.shape, train_y.shape)folds = KFold(n_splits=5, shuffle=True, random_state=2019)
prob_oof = np.zeros((train_x_flat.shape[0], ))
# test_pred_prob = np.zeros((test.shape[0], ))## train and predict
num_round = 1500
feature_importance_df = pd.DataFrame()
for fold_, (trn_idx, val_idx) in enumerate(folds.split(train_x_flat)):print("fold {}".format(fold_ + 1))trn_data = lgb.Dataset(train_x_flat[trn_idx], label=train_y[trn_idx])val_data = lgb.Dataset(train_x_flat[val_idx], label=train_y[val_idx])clf = lgb.train(params,trn_data,num_round,valid_sets=[trn_data, val_data],verbose_eval=30,early_stopping_rounds=100)prob_oof[val_idx] = clf.predict(train_x_flat[val_idx], num_iteration=clf.best_iteration)#     fold_importance_df = pd.DataFrame()
#     fold_importance_df["Feature"] = features
#     fold_importance_df["importance"] = clf.feature_importance()
#     fold_importance_df["fold"] = fold_ + 1
#     feature_importance_df = pd.concat([feature_importance_df, fold_importance_df], axis=0)from sklearn import metrics
print(metrics.roc_auc_score(train_y, prob_oof))#

使用lightGBM进行验证的demo相关推荐

  1. 微信小程序 滑块验证小demo

    滑块验证 小 demo 思路: 1.手指按住 并且 还能 滑动 2.滑动到一定的距离 进行判断 百度微信开发者文档 : 使用 movable-view的可移动区域. 结合 movable-view w ...

  2. JAVA使用HttpURLConnection请求HTTPS网站,不需要证书验证的DEMO教程

    最近在获取一个购物网站商品,发现浏览器和postman每次都可以请求到内容,但是java代码尝试了各种方式都是Connection refused: connect,一开始以为是java代码的问题,后 ...

  3. java版本微信jssdk、微信验证签名demo(Servlet)

    开发背景 最近在学习java,所以从网上看了一些别人的代码,再加入了自己的一些理解,主要是担心之后会忘记,所以写下一篇东西记录一下思路. 一. 获取acess_token以及jsapiTicket 新 ...

  4. 使用Jwt验证登录demo

    一.准备 依赖 <!--jwt依赖--><dependency><groupId>com.auth0</groupId><artifactId&g ...

  5. 秒滴云短信验证登录小demo

    短信验证登录demo <a class="click_login_head" data-href="/member" data-method=" ...

  6. python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能

    python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值.可视化模型效能 # 所有的模型中填写的参数都是通过randomsearchcv ...

  7. 全新的基于VVC思想的页面验证js框架vtor

    2019独角兽企业重金招聘Python工程师标准>>> Vtor 1.     概述  vtor是一个全新的解耦合页面验证js框架.根据全新的VVC思想(validator-view ...

  8. WCF全双工以及用户名密码验证

    WCF是支持TCP双向连接的,支持Server和Client之间互发协议,通过 订阅-发布 的全双工形式实现,全双工的用户名密码验证需要X509证书加密,单工模式的用户名密码验证时,X509证书是可选 ...

  9. jQuery html5Validate基于HTML5表单验证插件

    更新于2016-02-25 前面提到的新版目前线上已经可以访问: http://mp.gtimg.cn/old_mp/assets/js/common/ui/Validate.js demo体验狠狠地 ...

最新文章

  1. 办公自动化系统开发实例导航 源码_本色世界源码搭建(系统开发)
  2. 用python画图所需要的插件_用Python画图
  3. 如何结合IbatisNet的LIST遍历实现模糊查询
  4. java 多线程下载文件
  5. arcgisserver修改服务器地址,ArcGIS 10.1 for Server入门(7-6)ArcGIS for Server 10.1 服务迁移与恢复--多台服务器...
  6. React Native常用第三方汇总
  7. MessageDigest
  8. 使用 android adb命令 录像 screenrecord 和 截屏 screencap
  9. APR-服务器端编程
  10. 八卦图php怎么做,揭秘伏羲是如何画出神奇的八卦图的?
  11. 金融衍生物英语名词的对应中文解析
  12. sqlserver Month()函数取日期不足两位的加 0(转载)
  13. spring-cloud-oauth2
  14. Eclipse没有Dynamic Web Project选项解决
  15. tRNAscan-SE使用说明
  16. [1057]VMware安装的虚拟机窗口如何自适应屏幕大小
  17. 继承的表现形式与特点
  18. FME会员期刊(2012秋季版)——更新完毕
  19. dnf如何快速拾取物品_dnf一键捡物品的方法步骤技巧
  20. 作者:王印海(1965-),男,美国华盛顿大学(西雅图)土木和环境工程系终身教授、博士生导师。...

热门文章

  1. DPDK和VPP地址池
  2. 微信小程序api基础应用
  3. html响应式页面源码,关于响应式页面
  4. Python自动化测试学习2
  5. 从pcap文件中解析网络数据包
  6. clickhouse中的TTL
  7. OpenGL---GLUT教程(二) GLUT初始化
  8. ARM 37 个通用寄存器详解
  9. 阿里云Code设置ssh公钥
  10. 自己私藏的一篇:和现在做网络营销、咨询公司业务有关 和技术无关 和CRM有点关系 可能给网络社区和网络营销从业者有启发