使用lightGBM进行验证的demo
一、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相关推荐
- 微信小程序 滑块验证小demo
滑块验证 小 demo 思路: 1.手指按住 并且 还能 滑动 2.滑动到一定的距离 进行判断 百度微信开发者文档 : 使用 movable-view的可移动区域. 结合 movable-view w ...
- JAVA使用HttpURLConnection请求HTTPS网站,不需要证书验证的DEMO教程
最近在获取一个购物网站商品,发现浏览器和postman每次都可以请求到内容,但是java代码尝试了各种方式都是Connection refused: connect,一开始以为是java代码的问题,后 ...
- java版本微信jssdk、微信验证签名demo(Servlet)
开发背景 最近在学习java,所以从网上看了一些别人的代码,再加入了自己的一些理解,主要是担心之后会忘记,所以写下一篇东西记录一下思路. 一. 获取acess_token以及jsapiTicket 新 ...
- 使用Jwt验证登录demo
一.准备 依赖 <!--jwt依赖--><dependency><groupId>com.auth0</groupId><artifactId&g ...
- 秒滴云短信验证登录小demo
短信验证登录demo <a class="click_login_head" data-href="/member" data-method=" ...
- python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能
python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值.可视化模型效能 # 所有的模型中填写的参数都是通过randomsearchcv ...
- 全新的基于VVC思想的页面验证js框架vtor
2019独角兽企业重金招聘Python工程师标准>>> Vtor 1. 概述 vtor是一个全新的解耦合页面验证js框架.根据全新的VVC思想(validator-view ...
- WCF全双工以及用户名密码验证
WCF是支持TCP双向连接的,支持Server和Client之间互发协议,通过 订阅-发布 的全双工形式实现,全双工的用户名密码验证需要X509证书加密,单工模式的用户名密码验证时,X509证书是可选 ...
- jQuery html5Validate基于HTML5表单验证插件
更新于2016-02-25 前面提到的新版目前线上已经可以访问: http://mp.gtimg.cn/old_mp/assets/js/common/ui/Validate.js demo体验狠狠地 ...
最新文章
- 办公自动化系统开发实例导航 源码_本色世界源码搭建(系统开发)
- 用python画图所需要的插件_用Python画图
- 如何结合IbatisNet的LIST遍历实现模糊查询
- java 多线程下载文件
- arcgisserver修改服务器地址,ArcGIS 10.1 for Server入门(7-6)ArcGIS for Server 10.1 服务迁移与恢复--多台服务器...
- React Native常用第三方汇总
- MessageDigest
- 使用 android adb命令 录像 screenrecord 和 截屏 screencap
- APR-服务器端编程
- 八卦图php怎么做,揭秘伏羲是如何画出神奇的八卦图的?
- 金融衍生物英语名词的对应中文解析
- sqlserver Month()函数取日期不足两位的加 0(转载)
- spring-cloud-oauth2
- Eclipse没有Dynamic Web Project选项解决
- tRNAscan-SE使用说明
- [1057]VMware安装的虚拟机窗口如何自适应屏幕大小
- 继承的表现形式与特点
- FME会员期刊(2012秋季版)——更新完毕
- dnf如何快速拾取物品_dnf一键捡物品的方法步骤技巧
- 作者:王印海(1965-),男,美国华盛顿大学(西雅图)土木和环境工程系终身教授、博士生导师。...