lightGBM中的lightgbm.train
文章目录
- 1. lightgbm.train
- 2.返回 lightgbm.Booster
- methods
- 代码
1. lightgbm.train
lightgbm.train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None, fobj=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto',keep_training_booster=False, callbacks=None)
- params ( dict ) – 训练参数。# 超参数设置
- train_set ( Dataset ) – 要训练的数据。# 训练数据
- num_boost_round ( int , optional ( default=100 ) ) – 提升迭代次数。# 循环的轮数
- valid_sets ( list of Dataset , or None , optional ( default=None ) ) – 训练期间要评估的数据列表。# 验证数据
- valid_names(str 列表,或None ,可选(默认=None ))- 的名称valid_sets。# 验证集名称
- early_stopping_rounds=200,# 如果200轮后没有提升,就停止循环
返回的是一个训练好的Booster模型
2.操作:
用于训练你的模型,返回的是一个训练好的Booster模型
2.返回 lightgbm.Booster
classlightgbm.Booster(params=None, train_set=None, model_file=None, model_str=None)
params ( dict or None , optional ( default=None ) ) – Booster 的参数。
train_set ( Dataset or None , optional ( default=None ) ) – 训练数据集。
model_file ( str , pathlib.Path or None , optional ( default=None ) ) – 模型文件的路径。
model_str ( str or None , optional ( default=None ) ) – 模型将从该字符串加载
methods
1、
feature_importance(importance_type='split', iteration=None)
Get feature importances.(获取特征重要性)
Parameters
importance_type (str, optional (default=“split”)) – 如何计算重要性。如果“拆分”,则结果包含该特征在模型中使用的次数。如果“增益”,结果包含使用该特征的分割的总增益。
iteration (int or None, optional (default=None)) –限制特征重要性计算中的迭代次数。如果None,如果存在最好的迭代,则使用它;否则,将使用所有树。如果 <= 0,则使用所有树(无限制)。
Returns:result – Array with feature importances.(结果- 具有特征重要性的数组)
Return type:numpy 数组 (numpy array)
2、
predict(data, start_iteration=0, num_iteration=None, raw_score=False, pred_leaf=False, pred_contrib=False, data_has_header=False, is_reshape=True, **kwargs)
data:用于预测的数据源。如果是 str 或 pathlib.Path,它表示文本文件(CSV、TSV 或 LibSVM)的路径。
Returns:结果- 预测结果。对于特征贡献(何时),可以是稀疏对象或稀疏对象列表(每个元素代表一个类的预测pred_contrib=True)。
numpy 数组、scipy.sparse 或 scipy.sparse 列表
代码
# params 超参数设置params = {'num_leaves': 491, # 叶节点数量'min_data_in_leaf': 106, # 每个叶子节点中的数据'objective': 'binary', # 任务:二分类'max_depth': -1, # -1 : 不限制深度"boosting_type": "gbdt", # 'dart', 'goss', 'rf'"metric": 'auc', # 衡量标准"verbosity" : -1, # 不显示信息'random_state': 66, # 随机种子}
# params 超参数设置params = {'num_leaves': 491, # 叶节点数量'min_data_in_leaf': 106, # 每个叶子节点中的数据'objective': 'binary', # 任务:二分类'max_depth': -1, # -1 : 不限制深度"boosting_type": "gbdt", # 'dart', 'goss', 'rf'"metric": 'auc', # 衡量标准"verbosity" : -1, # 不显示信息'random_state': 66, # 随机种子}# 创建DataFrame保存特征重要性
feature_importances = pd.DataFrame(index=None)feature_importances['features'] = X.columns# 5折交叉验证#将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,
#然后利用验证集验证模型,记录最后的分类准确率为此分类器的性能指标。folds = KFold(n_splits=5)splits = folds.split(X, y) # 分割成5份,前4份是训练集索引,最后1份是验证集索引next(iter(splits)) # 输出的是索引
best_auc = 0
best_model = Nonefor k, (train_indices, val_indices) in enumerate(splits):print("第 %d 折\n" % k)# iloc:根据标签的所在位置,从0开始计数,先选取行再选取列X_train_data, X_val_data = X.iloc[train_indices], X.iloc[val_indices] # 训练集, 验证集y_train, y_val = y.iloc[train_indices], y.iloc[val_indices] # 训练标签,验证标签#print("X_train_data shape : \t", X_train_data.shape, "X_val_data shape : \t", X_val_data.shape)#这里调用了 lightGBM 算法 ,第一个是传入数据,第二个是数据的标签train_dataset = lgb.Dataset(X_train_data, label=y_train) # 训练集val_dataset = lgb.Dataset(X_val_data, label=y_val) # 验证集lgb_model = lgb.train(params=params, # 超参数设置train_set=train_dataset, # 训练数据num_boost_round=10000, # 循环的轮数valid_sets=val_dataset, # 验证数据valid_names='validation', # 验证集名称early_stopping_rounds=200,) # 如果200轮后没有提升,就停止循环# 保存特征重要性feature_importances[f'fold_{k+1}'] = lgb_model.feature_importance()#print("看一看有啥东西{}".format())# 对验证集进行预测y_val_pred = lgb_model.predict(X_val_data)# 计算roc_aucroc_auc = roc_auc_score(y_val, y_val_pred)print(f" Fold {k + 1} | AUC_ROC : { roc_auc * 100}%")# 判断是否是最优模型if roc_auc > best_auc:best_auc = roc_aucbest_model = lgb_model
lightGBM中的lightgbm.train相关推荐
- 在Python中使用lightgbm
前言-lightgbm是什么? LightGBM 是一个梯度 boosting 框架, 使用基于学习算法的决策树. 它是分布式的, 高效的, 装逼的, 它具有以下优势: 速度和内存使用的优化 减少分割 ...
- lightgbm中的feval参数使用明细
一.问题起源: 在Lightgbm中如何使用自定义函数呢,文档搜索中找到了feval,但不知道如何使用? 二.解决方案: 1.官方文档解释: 注意事项:1.自定义的损失函数接受两个参数:第一个是模型预 ...
- lightgbm java_如何在C++程序中调用lightgbm (How to use lightgbm in C++ program)
本文作者为tieying zhang,有任何问题请联系zhangtiey@gmail.com Lightgbm以轻量著称,所以在实际的C++程序中,常常需要使用.但是官方文档并没有介绍如何在C++中调 ...
- LightGBM中GBDT的实现
现在LightGBM开源了,这里将之前的一个文档发布出来供大家参考,帮助更快理解LightGBM的实现,整体思路应该是类似的. LightGBM优雅,快速,效果好,希望LightGBM越来越好:) L ...
- LightGBM 中文文档
LightGBM 是一个梯度 boosting 框架, 使用基于学习算法的决策树. 它是分布式的, 高效的, 装逼的, 它具有以下优势: 速度和内存使用的优化 减少分割增益的计算量 通过直方图的相减来 ...
- notebook中安装lightgbm的gpu版本
注意一定要打开kaggle notebook右侧的Internet和GPU链接,否则会安装失败的. %%time !rm -r /opt/conda/lib/python3.6/site-packag ...
- R中安装LightGBM(Windows 64位)
1. 适用对象 1)Windows 64位操作系统: 2)R,64-bit.如果有R i386,卸载R重装一遍,安装R时注意去掉32-bit的选项. 2. 说明 安装前请务必先阅读LightGBM R ...
- python lightgbm中使用“early_stopping_rounds”和“verbose_eval”出现 UserWarning
问题: 调用lightgbm库,设置了早停轮次"early_stopping_rounds"参数和打印log间隔"verbose_eval"参数后出现UserW ...
- kaggle中安装lightgbm的gpu版本
代码如下: %%time # CPU times: user 928 ms, sys: 328 ms, total: 1.26 s # Wall time: 43.7 s !rm -r /kaggle ...
最新文章
- 字符串处理函数C语言实现(一)
- 《Java程序书面采访猿收藏》之 instanceof的作用是什么
- (转)rlwrap真是一个好东西
- 编译mysql4.0时候出现错误提示checking LinuxThreads... Not found
- 我的世界java版怎么装在u盘_我的世界选择器参数怎么使用?
- Charles - 接口抓包分析工具
- python变量标识符_python中的变量和标识符
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1
- springboot项目后台运行关闭_springboot项目在服务器上部署过程(新手教程)
- php技术计算字符个数的函数是什么,php计算字符串中的单词数的函数str_word_count()...
- windows 安装mysql的时候最后执行一直停留在Write configuration file
- C#中的delegate和event (转)
- va_start和va_end的使用及原理
- 机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】
- Nginx 解决 Tomcat 集群下的 Session共享
- 【转】Delphi7程序调用C#写的DLL解决办法
- 关于金仓数据库的java连接问题
- ET和LT的原理和区别
- 一年之计在于春,一日之计在于晨
- java 使用subList痛彻心扉的领悟