A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
✨ v4.2.0 of the R package is now available on CRAN (link), the first major release of the R package in 2+ years.
✨ The Python package now accepts Apache Arrow Tables and Arrays (thanks @borchero!)
🔧 A critical bug in quantized training support is fixed
random_state
@david-cortes (#6174)parallel
region @jameslamb (#6135)LGBMClassifier.fit
@david-cortes (#6002)cat()
instead of print()
for metrics and callbacks @david-cortes (#6171)mamba
instead of conda
in macOS and Linux CI jobs @borchero (#6140)lgb.Dataset
instance to lightgbm()
@david-cortes (#6005)Note
This release of the R package was not submitted to CRAN, due to the issues documented in https://github.com/microsoft/LightGBM/issues/5987.
This release contains all previously-unreleased changes since v3.3.1
over 1.5 years ago (link).
Summary of improvements:
scikit-build-core
(link) as its build backendmanylinux_2_28
Linux wheels now support GPU (OpenCL-based, not CUDA) build automatically... just pip install lightgbm
then pass {"device": "gpu"}
in params (thanks @jgiannuzzi!)py.typed
so any code using LightGBM can benefitpandas
nullable typeslgb.early_stopping(..., min_delta=n)
) for how much eval metrics must improve to be considered "improved" for early stoppingscikit-learn
is no longer a required dependencyray
, Dask) (thanks @Yard1!)dgCMatrix
and dsparseMatrix
(thanks @david-cortes!)saveRDS()
and readRDS()
for Booster
, print()
and summary()
methods for Dataset
(thanks @david-cortes!)Summary of breaking changes:
from lightgbm import *
setup.py
, pip install --install-option
supportpip install --install-option
(to work with newer pip
, see https://github.com/pypa/pip/issues/11358)
MSBUild.exe
... that now requires compiling lib_lightgbm.dll
separately and then building a wheel that bundles it...
lgb.unloader()
predict(newdata, type = ...)
in predict()
, for consistency with base R and most other machine learning projectsplot_tree
and create_tree_digraph
(fixes #4784) @jmoralez (#5119)predict
@david-cortes (#4977)reset_parameter
callback pickleable @StrikerRUS (#5109)record_evaluation
callback pickleable @StrikerRUS (#5107)log_evaluation
callback pickleable @StrikerRUS (#5101)weight
-> weights
@david-cortes (#4975)early_stopping
callback pickleable @Yard1 (#5012)lightgbm()
@david-cortes (#4976)init()
and set_params()
methods @StrikerRUS (#4822)print()
and summary()
methods for Booster @david-cortes (#4686)n_estimators_
and n_iter_
post-fit attributes @StrikerRUS (#4753)setup.py
) (fixes #5061) @jameslamb (#5759)type
argument to control prediction types @david-cortes (#5133)n_jobs
and change default to number of cores @david-cortes (#5105)reshape
argument in predict
@david-cortes (#4971)lightgbm()
and change default to number of cores @david-cortes (#4972)data
-> newdata
in predict
@david-cortes (#4973)windows-2019
image instead of vs2017-win2016
@StrikerRUS (#5059)early_stopping_rounds
argument of train()
and cv()
functions @StrikerRUS (#4908)evals_result
argument of train()
function @StrikerRUS (#4882)None
for evals_result_
@StrikerRUS (#4884)verbose_eval
argument of train()
and cv()
functions @StrikerRUS (#4878)verbose
argument of model_from_string()
method of Booster class @StrikerRUS (#4877)early_stopping_rounds
argument of fit()
method @StrikerRUS (#4846)slice()
@jameslamb (#4872)lgb.Dataset()
@jameslamb (#4874)dim.lgb.Dataset()
@jameslamb (#4873)create_valid()
@jameslamb (#4865)best_iteration
for sklearn and standard APIs @StrikerRUS (#4845)verbose
argument from fit()
method @StrikerRUS (#4832)learning_rates
argument of train()
function @StrikerRUS (#4831)ylabel
argument of plot_metric()
function @StrikerRUS (#4818)print_evaluation()
function @StrikerRUS (#4819)silent
argument @StrikerRUS (#4800)delete[]
where appropriate instead of delete
@david-cortes (#4984)print.lgb.Booster()
@StrikerRUS (#4941)--no-build-vignettes
option for build-cran-package.sh
@jameslamb (#4848)array-like
wording @StrikerRUS (#4816)time-costs
Python-package build option @StrikerRUS (#5554)conda-forge
channel preference over default
one and describe possible workaround for OpenMP conflicts in FAQ @StrikerRUS (#4994)pred_early_stop
can be used only in normal and raw scores prediction @StrikerRUS (#4823)nthreads
parameter @StrikerRUS (#4756)Dataset.feature_penalty
@jameslamb (#5656)ubuntu-latest
at CI (fixes #5186) @StrikerRUS (#5288)pandas.Series.iteritems
with pandas.Series.items
@jmoralez (#5506)#ifndef
guards @StrikerRUS (#5466)11.7.0
to 11.7.1
at CI @StrikerRUS (#5442)11.6.2
to 11.7.0
at CI @StrikerRUS (#5287)basic.is_numeric()
with _ @ak04p (#5421)lintr
code @StrikerRUS (#5327)predict()
with _choose_param_value()
@StrikerRUS (#5308)nolint
mark @StrikerRUS (#5300)basic.py
@StrikerRUS (#5188)fobj
with custom objective
in test comments and make tests stricter @StrikerRUS (#5173)11.5.1
to 11.6.2
at CI @StrikerRUS (#5149)master
fails with graphviz-related error @StrikerRUS (#5068)train()
function defined in engine.py
from test_basic.py
to test_engine.py
@StrikerRUS (#5034)bdist
CI job in old Ubuntu container @StrikerRUS (#5022)latest
tag again for Ubuntu 14 CI Docker @StrikerRUS (#5001)11.5.0
to 11.5.1
at CI @StrikerRUS (#4967)-1
for exit code in case of failure @StrikerRUS (#4939)#
symbol for comments @StrikerRUS (#4940)testthat::expect_is()
@jameslamb (#4916)UnboundLocalError
in early stopping callback for Python 2 @StrikerRUS (#4855)_compare_params_for_warning()
and make it reusable @StrikerRUS (#4824)CMAKE_CUDA_FLAGS
variable in CMakeLists.txt
@StrikerRUS (#4799)linelength
errors @StrikerRUS (#4796)endif()
and endfunction()
without expression inside in CMakeLists.txt
@StrikerRUS (#4798)filename
that is no longer true with new version of graphviz @StrikerRUS (#4778)freetype
version @StrikerRUS (#4776)cv()
function @StrikerRUS (#4766)datatable
to the mocked modules during docs building process and sort them alphabetically @StrikerRUS (#4750)This is a special release, put up to prevent the R package from being archived on CRAN.
See #5661 and #5662 for context.
This release only contains the changes, relative to v3.3.4
, necessary to prevent removal of the R package from CRAN.
None
None
None
None
None
This is a special release, put up to prevent the R package from being archived on CRAN.
See #5618 and #5619 for context.
This release only contains the changes, relative to v3.3.3
, necessary to prevent removal of the R package from CRAN.
None
None
None
None
This is a special release, put up to prevent the R package from being archived on CRAN.
See https://github.com/microsoft/LightGBM/issues/5502 and https://github.com/microsoft/LightGBM/pull/5525 for context.
This release only contains the changes, relevant to v3.3.2
, necessary to prevent removal of the R package from CRAN.
None
None
None
std::function
usage @david-cortes (#4673)1.10.0
to 1.11.0
@StrikerRUS (#4683)setup.py
@StrikerRUS (#4663)licenseUrl
field with license
one in .nuspec
file @StrikerRUS (#4669)__sklearn_is_fitted__()
in all estimator fitness checks @StrikerRUS (#4654)init_score
in multiclass classification task @jmoralez (#4150)ylabel
argument of plot_metric()
function @StrikerRUS (#4624)print_evaluation()
into log_evaluation()
@StrikerRUS (#4604)train()
and cv()
functions and sklearn wrapper @StrikerRUS (#4574)silent
and standalone verbose
args. Prefer global verbose
param @StrikerRUS (#4577)importance_type
param in plotting @StrikerRUS (#4570)eval_at
aliases in keyword arguments @StrikerRUS (#4599)callable
in docstrings @StrikerRUS (#4575)str
in docstrings @StrikerRUS (#4565)str
and add commas in list of ...
types @StrikerRUS (#4557)eval_result
argument in record_evaluation()
@StrikerRUS (#4559)daal4py
in README @StrikerRUS (#4532)keep_training_booster
param description @StrikerRUS (#4364)__sklearn_is_fitted__()
method to be better compatible with scikit-learn API @StrikerRUS (#4636)CMakeLists.txt
for MPI @StrikerRUS (#4644)setup.py
@StrikerRUS (#4620)dask.py
@StrikerRUS (#4615)init_score
array when set by predictor @StrikerRUS (#4510)CreateSampleIndices()
in c_api.cpp
@cyfdecyf (#4478)absolute()
on paths first @StrikerRUS (#4444).gitignore
@StrikerRUS (#4429)print
s in simple_example.py
and sklearn_example.py
@StrikerRUS (#4396)