产品功能优化与约束
我已经培训了一个学习数据集的LightGBM模型.该模型可以预测样本的相关性评分.因此,预测越高.现在,该模型已经学会了我想找到一些能够为我提供最高预测分数的最佳值. 所以,可以说我有功能u,v,w,x,y,z,我想优化的功能是x,y,z. maximize f(u,v,w,x,y,z) w.r.t features x,y,z where f is a lightgbm model subject to constraints : y = Ax + b z = 4 if y = thresh_b else 4-0.3 thresh_m
6 2023-05-12
编程技术问答社区
在Mac上安装具有OpenMP依赖性的Lightgbm
我是Python的新手,想安装../anaconda/envs/python3/lib/python3.6/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error) 342 343 if handle is None: --> 344 self._handle = _dlopen(self._name, mode) 345 else: 346 self._handle = handle OSError: dlopen(../anaconda/envs/python3/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/7/libgomp.1.dylib Referenced from: ../anaconda/envs/py
4 2023-05-11
编程技术问答社区
从LightGBM模型中访问树和结点
在Sci-kit学习中,可以访问整个树结构,即树的每个节点.这允许探索在树的每个拆分处使用的属性,以及用于测试的值 The binary tree structure has 5 nodes and has the following tree structure: node=0 test node: go to node 1 if X[:, 3]
2 2023-04-27
编程技术问答社区
让LightGBM/ LGBM在Google Colabratory上用GPU运行
我经常在Google Colabratory上运行LGBM,我发现此页面说它默认设置为CPU的LGBM,因此您需要先设置. !git clone --recursive https://github.com/Microsoft/LightGBM %cd LightGBM !mkdir build %cd build !cmake ../../LightGBM !make -j4 !git clone --recursive https://github.com/Microsoft/LightGBM.git %cd LightGBM/python-package !python3 setup.py install --gpu !pip install cmake 但我仍然有一个错误 GPU Tree Learner was not enabled in this build.Please recompile with CMake option -DUSE_GPU=1 我该如何修
12 2023-04-27
编程技术问答社区
docker中的Lightgbm libgomp.so.1: 无法打开共享对象文件
我在Mac中安装了LightGBM,并早些时候测试了一个不同的项目. 现在,我在Mac上的Python 3.6的Docker内.一旦我在烧瓶应用程序中添加import lightgbm as lgbm,我就会获得错误 OSError: libgomp.so.1: cannot open shared object file: No such file or directory 发生了什么事?有人可以建议吗? 解决方案 这对我有用,将其包括在您的Dockerfile 中 RUN apt-get update && apt-get install -y --no-install-recommends apt-utils RUN apt-get -y install curl RUN apt-get install libgomp1 来源:/2223#ISSUECOMMENT-499788066 其他解决方案 根据图像的不同,您可能还需要一个C ++编译
12 2023-04-18
编程技术问答社区
lightgbm python数据集参考参数是什么意思?
我试图弄清楚如何用python中的lightGBM培训GBDT分类器,但是与 另一个问题是,在文档中,据说"验证数据应与培训数据保持一致",而我研究数据集的详细信息时,我发现还有另一种陈述显示:"如果这是数据集为了验证,应将培训数据用作参考". 我的最后问题是,为什么验证数据应与培训数据保持一致?数据集中参考的含义是什么?在培训期间如何使用它?对齐目标是否通过参考培训数据来完成?这种"参考"策略和交叉验证有什么区别? 希望有人可以帮助我摆脱这个迷宫,谢谢! 解决方案 "验证数据应与培训数据一致"的想法很简单: 您对培训数据进行的每项预处理,您都应该以相同的方式进行验证数据和生产.这适用于每种ML算法. 例如,对于神经网络,您通常会标准化培训输入(按平均值提取,除以STD). 假设您的训练中有一个可变的"年龄",平均26yo.它将映射到" 0"以供神经网络培训.对于验证数据,您希望以与培训数据(使用培训的平均值和培训的平均值)相同的方式进行归一化,以便验证中的26yo仍将映射
20 2023-04-12
编程技术问答社区
如何使用lightgbm.cv进行回归?
我想使用 lgb.dataset 对LightGBM模型进行交叉验证,并使用早期_Stopping_Rounds .以下方法与XGBoost的 xgboost.cv 无问题.我不想使用gridsearchcv使用Scikit Learn的方法,因为它不支持早期停止或LGB.Dataset. import lightgbm as lgb from sklearn.metrics import mean_absolute_error dftrainLGB = lgb.Dataset(data = dftrain, label = ytrain, feature_name = list(dftrain)) params = {'objective': 'regression'} cv_results = lgb.cv( params, dftrainLGB, num_boost_round=100, nfold=
10 2023-04-12
编程技术问答社区
安装后无法导入lightgbm
我的操作系统是Macos Sierra,10.12.5,我正在使用Anaconda和Python 2.7.安装后,当我尝试时: 导入LightGBM作为LGB 我收到以下消息: OSError Traceback (most recent call last) in () ----> 1 import lightgbm as lgb /Users/tenggao/anaconda/lib/python2.7/site-packages/lightgbm/__init__.py in () 7 from __future__ import absolute_import 8 ----> 9 from .basic import Booster, Dataset 10 from .cal
16 2023-03-16
编程技术问答社区
Lightgbm OSError, 未加载图书馆
如果我只是这样做: import lightgbm as lgb 我得到 python script.py Traceback (most recent call last): File "script.py", line 4, in import lightgbm as lgb File "/usr/local/lib/python2.7/site-packages/lightgbm/__init__.py", line 8, in from .basic import Booster, Dataset File "/usr/local/lib/python2.7/site-packages/lightgbm/basic.py", line 31, in _LIB = _load_lib() File "/usr/local/lib/python2.7/site-packages/lightgbm/basic.py
4 2023-03-16
编程技术问答社区
什么是LightGBM(分类)中的叶子分数?
我已经在二进制问题上训练了LightGBM,当绘制树时,我会得到一些这样的叶子 我很难找到分类树的损失功能 - LightGBM是否可以最大程度地减少二进制情况下的跨凝性,并且是叶子得分吗? 解决方案 我很难找到分类树的损失功能 - LightGBM是否可以最大程度地减少二进制案例中的跨渗透率 是,如果您没有指定目标,则LGBMClassifier默认情况下将使用跨渗透率. 那是叶子得分吗? leaf 33: -2.209("叶分数")之类的值表示目标值的值,该值将预测为叶节点的实例,乘以学习率. 由于增强过程的工作方式, 负值是可能的.每棵树都受到该树模型的残差的训练.通过求和所有树的输出来获得来自模型的预测. XGBoost文档对此有很好的解释:将来,请尝试提供一个小的可重复示例,以解释您如何创建一个您要问问题的数字.我使用lightgbm 3.1.0假设了以下python代码.您可以更改tree_index的值以查看模型中的不同树. imp
8 2023-03-15
编程技术问答社区
在LightGBM中使用" IS_UNBALANCE"参数
我试图在模型培训中使用" IS_UNBALANCE"参数,以解决二进制分类问题,而正类别约为3%.如果我设置参数" is_unbalance",我会观察到第一次迭代中的二进制对数损失下降,但随后不断增加.我只有在启用此参数" is_unbalance"时才注意到这种行为.否则,log_loss会稳定下降.感谢您的帮助.谢谢. 解决方案 当您不平衡这种不平衡数据集的集合时,显然,客观值将始终下降 - 并且可能会达到将所有预测分类为多数级类的点,同时拥有出色的目标价值. 平衡课程是必要的,但这并不意味着您应该在is_unbalanced上停止 - 您可以使用sample_pos_weight,具有自定义度量或对样品进行施加权重,例如以下内容: WEIGHTS = y_train.value_counts(normalize = True).min() / y_train.value_counts(normalize = True) TRAIN_WEIGHTS = pd.D
4 2023-03-15
编程技术问答社区
如何在LightGBM中实现具有与二进制目标相同行为的自定义日志?
我正在尝试为二进制分类实施自己的损失功能.首先,我想复制二进制目标的确切行为.特别是我想要: 两个功能的损失具有相同的量表 训练和验证坡度相似 predition_proba(x)返回概率 下面的代码都不是这样: import sklearn.datasets import lightgbm as lgb import numpy as np X, y = sklearn.datasets.load_iris(return_X_y=True) X, y = X[y
26 2023-03-15
编程技术问答社区
Python:如何从Optuna LightGBM研究中检测最佳模型?
我想获得以后在笔记本中使用的最佳型号,以预测使用其他测试批次. 可重现的示例(取自Optuna github): import lightgbm as lgb import numpy as np import sklearn.datasets import sklearn.metrics from sklearn.model_selection import train_test_split import optuna # FYI: Objective functions can take additional arguments # (https://optuna.readthedocs.io/en/stable/faq.html#objective-func-additional-args). def objective(trial): data, target = sklearn.datasets.load_breast_cancer(return_X_
4 2023-03-15
编程技术问答社区
在lightgbm中,f1_score是一个指标。
我想用自定义度量训练LGB型号:f1_score weighted平均. 我通过在这里找到了自定义二进制错误函数的实现.我以类似的功能实现了返回f1_score,如下所示. def f1_metric(preds, train_data): labels = train_data.get_label() return 'f1', f1_score(labels, preds, average='weighted'), True 我尝试通过将feval参数作为f1_metric训练模型. evals_results = {} bst = lgb.train(params, dtrain, valid_sets= [dvalid], valid_names=['valid'],
180 2023-03-15
编程技术问答社区
LightGBM中的交叉验证
我们应该如何使用lightgbm.cv的字典输出来改善我们的预测? 这是一个示例 - 我们使用以下代码训练我们的简历模型: cv_mod = lgb.cv(params, d_train, 500, nfold = 10, early_stopping_rounds = 25, stratified = True) 我们如何使用从上述代码的最佳迭代中找到的参数来预测输出?在这种情况下,cv_mod没有lightgbm.train的"预测"方法,而在lightgbm.train.predict(..., pred_parameters = cv_mod)中使用时,lightgbm.cv的字典输出会引发错误. 我是否错过了一个重要的转换步骤? 解决方案 通常,CV的目的不是进行超参数优化.目的是评
14 2023-03-15
编程技术问答社区
高AUC,但在不平衡的数据下预测效果不好
我正在尝试在非常不平衡的数据集上构建使用LightGBM的分类器.不平衡的比例97:3,即: Class 0 0.970691 1 0.029309 我使用的参数,培训代码如下所示. lgb_params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'metric':'auc', 'learning_rate': 0.1, 'is_unbalance': 'true', #because training data is unbalance (replaced with scale_pos_weight) 'num_leaves': 31, # we should let it be smaller than 2^(max_depth) 'max_depth': 6, # -1 mea
0 2023-03-15
编程技术问答社区
在Google Collab上为LightGBM安装GPU支持
任何人试图在Google Joparanc上使用笔记本上安装lightgbm的GPU支持? 解决方案 非常简单:只需运行 !pip install lightgbm --install-option=--gpu 或 pip install lightgbm --install-option=--gpu --install-option="--opencl-include-dir=/usr/local/cuda/include/" --install-option="--opencl-library=/usr/local/cuda/lib64/libOpenCL.so" 记住要在笔记本中启用GPU支持,并在LightGBM设置中添加'device':'gpu'.而且,不要忘记卸载不支持GPU版本的LightGBM版本. 其他解决方案 确保正确遵循安装步骤 !git clone --recursive https://github.com/Micro
22 2022-10-23
编程技术问答社区
轻量级gbm-python API与Scikit-learn API的比较
我试图将 lgbm 应用于我的一个问题.为此,我正在经历“http://lightgbm.readthedocs.io/en/latest/Python-API.html".但是,我有一个基本问题.Training API 和 Scikit-learn API 之间有什么区别吗?我们可以同时使用这两种 API 来解决相同的问题吗? 谢谢,迪班詹. 解决方案 简短的回答:是的,如果您以相同的方式配置它们,它们将提供相同的结果. 原因是 sklearn API 只是“本机训练"API 的包装器,而后者又是后端 C++ 库的包装器.最后,这是您的选择.我个人会建议支持 sklearn API.两个主要优点是: 您可以使用完整的 sklearn 工具包(具有数据预处理、超参数优化、模型评估等的管道) 您可以在不同模型之间轻松切换,即您的输入数据具有相同的格式(pd.DataFrame或np.ndarray),trainign界面相同,您可以在sklearn模型、lig
64 2022-08-23
编程技术问答社区
带有GridSearchCV的Python-LightGBM,正在永久运行
最近,我正在进行多个实验来比较Python XGBoost和LightGBM.看来这种LightGBM是一种新算法,人们说它在速度和准确性上都比XGBoost更好. 这是 lightgbm github . 这是 lightgbm python api文档可以打电话.它可以直接从LightGBM模型调用,也可以由LightGBM Scikit-Learn调用. 这是 xgboost python api i使用.如您所见,它具有与上面的LightGBM Python API相似的数据结构. 这是我尝试的: 如果您在XGBoost和LightGBM中都使用train()方法,则LightGBM的工作速度更快,精度更高.但是这种方法没有交叉验证. 如果您在两种算法中尝试cv()方法,则用于交叉验证.但是,我找不到使用它的方法返回一组最佳参数. 如果您尝试使用LGBMClassifier和XGBClassifer尝试Scikit-Learn GridSearchCV
48 2022-08-22
编程技术问答社区
Python。LightGBM交叉验证。如何使用lightgbm.cv进行回归?
我想用 lgb.Dataset 对 LightGBM 模型进行交叉验证并使用 early_stopping_rounds.以下方法适用于 XGBoost 的 xgboost.cv.我不喜欢在 GridSearchCV 中使用 Scikit Learn 的方法,因为它不支持提前停止或 lgb.Dataset. import lightgbm as lgb from sklearn.metrics import mean_absolute_error dftrainLGB = lgb.Dataset(data = dftrain, label = ytrain, feature_name = list(dftrain)) params = {'objective': 'regression'} cv_results = lgb.cv( params, dftrainLGB, num_boost_round=100, nfo
1372 2022-08-22
编程技术问答社区