LightGBM Versions Save

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.3.0

2 months ago

Changes

💡 New Features

  • [CUDA] Add arch=8.9 to CUDA_ARCHS for RTX 40XX @DmitryUlyanov (#6272)

🔨 Breaking

  • [cmake] [c++] require CMake 3.18+ @jameslamb (#6260)
  • [R-package] remove readRDS.lgb.Booster() and saveRDS.lgb.Booster() @jameslamb (#6246)

🚀 Efficiency Improvement

  • [R-package] Remove non-beneficial parallelization @david-cortes (#6209)

🐛 Bug Fixes

  • [R-package] [ci] remove unnecessary include in linear_tree_learner (fixes #6264) @jameslamb (#6265)
  • [cmake] [CUDA] ignore CUDA-specific source files in non-CUDA builds (fixes #6267) @sabjohnso (#6268)
  • [c++] include OpenMP-control files in MSBuild solution file (fixes #6238) @jameslamb (#6251)
  • [cmake] [swig] use CMake's built-in file-copying mechanisms instead of 'cp' @jameslamb (#6259)

📖 Documentation

  • [docs] Add LightGBMLSS to README @StatMixedML (#6254)
  • [ci] [docs] add Oliver to CODEOWNERS @jameslamb (#6247)
  • Fix small typo and grammar in docs @arunstar (#6245)

🧰 Maintenance

  • [ci] fix conda env creation in 'regular' CI job (fixes #6282) @jameslamb (#6283)
  • [R-package] [ci] switch vignettes from 'rmarkdown' to 'markdown' @jameslamb (#6258)
  • [python-package] fix mypy error about pandas categorical features @jameslamb (#6253)
  • [ci] update issue-locking workflow @jameslamb (#6256)
  • [ci] upgrade to GoogleTest v1.14.0 (fixes #5976) @jameslamb (#5981)
  • [ci] [R-package] speed up valgrind job @jameslamb (#6237)
  • bump development version to 4.2.0.99 @jameslamb (#6241)

v4.2.0

3 months ago

✨ 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

Changes

💡 New Features

  • [python-package] Allow to pass Arrow table for prediction @borchero (#6168)
  • [python-package] Allow to pass Arrow table and array as init scores @borchero (#6167)
  • [python-package] Allow to pass Arrow array as groups @borchero (#6166)
  • [python-package] Allow to pass Arrow array as weights @borchero (#6164)
  • [python-package] Accept numpy generators as random_state @david-cortes (#6174)
  • [python-package] Allow to pass Arrow array as labels @borchero (#6163)
  • [python-package] Allow to pass Arrow table as training data @borchero (#6034)

🔨 Breaking

  • [python-package] fix access to Dataset metadata in scikit-learn custom metrics and objectives @jameslamb (#6108)
  • [CUDA] drop CUDA 10 support, start supporting CUDA 12 (fixes #5789) @jameslamb (#6099)

🚀 Efficiency Improvement

  • [R-package] Fix inefficiency in retrieving pointers @david-cortes (#6208)
  • [CUDA] CUDA Quantized Training (fixes #5606) @shiyu1994 (#5933)

🐛 Bug Fixes

  • fix errors from MSVC '/permissive-' mode (fixes #6230) @Zhaojun-Liu (#6232)
  • [R-package] [c++] add tighter multithreading control, avoid global OpenMP side effects (fixes #4705, fixes #5102) @jameslamb (#6226)
  • [python-package] take shallow copy of dataframe in predict (fixes #6195) @jmoralez (#6218)
  • Fix null handling for Arrow data @borchero (#6227)
  • [R-package] use safer pattern for error formatting (fixes #6212) @jameslamb (#6216)
  • [python-package] fix libpath.py @shiyu1994 (#6192)
  • set explicit number of threads in every OpenMP parallel region @jameslamb (#6135)
  • ignore unknown parameters when loading from model file @jmoralez (#6126)
  • [python-package] [R-package] include more params in model text representation (fixes #6010) @jameslamb (#6077)
  • [fix] fix quantized training (fixes #5982) (fixes #5994) @shiyu1994 (#6092)
  • [python-package] Fix misdetected objective after multiple calls to LGBMClassifier.fit @david-cortes (#6002)

📖 Documentation

  • [docs] remove links to Laurae++ site @jameslamb (#6193)
  • [docs] reduce redirects in docs links @jameslamb (#6181)
  • [docs] fix broken links @jameslamb (#6161)

🧰 Maintenance

  • release v4.2.0 @jameslamb (#6191)
  • [ci] [R-package] allow more possibly-lost warnings from valgrind @jameslamb (#6233)
  • [ci] Upgrade Azure VMSS to use Mariner Linux @shiyu1994 (#6222)
  • Add msvc conformance check @Zhaojun-Liu (#6234)
  • [python-package] Add tests for passing Arrow arrays with empty chunks @borchero (#6210)
  • [R-package] change CRAN maintainer @jameslamb (#6224)
  • [CUDA] fix typo in error message @jameslamb (#6207)
  • [python-package] ignore mypy errors related to ctypes string buffers @jameslamb (#6198)
  • [python-package] consolidate pandas-to-numpy conversion code @jameslamb (#6156)
  • [R-package] standardize naming of internal functions @jameslamb (#6179)
  • [R-package] remove unreachable code @jameslamb (#6180)
  • allow new files in include/LightGBM @jameslamb (#6177)
  • [R-package] Use cat() instead of print() for metrics and callbacks @david-cortes (#6171)
  • [ci] resolve warning in tests @jameslamb (#6154)
  • [ci] use mamba instead of conda in macOS and Linux CI jobs @borchero (#6140)
  • factor out uses of omp_get_num_threads() and omp_get_max_threads() outside of OpenMP wrapper @jameslamb (#6133)
  • remove unnecessary allocations in HistogramSumReducer @jameslamb (#6132)
  • [ci] [R-package] enforce more {lintr} checks @jameslamb (#6130)
  • fix compiler warnings for CPP tests @jameslamb (#6124)
  • [ci] [R-package] test against R 4.3 on Windows @jameslamb (#6061)
  • [python-package] reorganize early stopping callback @jameslamb (#6114)
  • [python-package] simplify Dataset._compare_params_for_warning() @jameslamb (#6120)
  • [ci] fix sh-compatibility issue in build-cran-package.sh @jameslamb (#6118)
  • [python-package] remove unnecessary allocations in ctypes code @jameslamb (#6111)
  • [python-package] fix mypy errors in Dataset construction @jameslamb (#6106)
  • [ci] ensure correct R version is used on GitHub Actions (fixes #5640) @jameslamb (#6107)
  • [python-package] fix mypy error about eval result tuples @jameslamb (#6105)
  • [python-package] fix mypy error from Dataset.pandas_categorical @jameslamb (#6098)
  • [ci] Fix typo in dependencies @borchero (#6100)
  • [python-package] fix mypy errors related to eval result parsing in callbacks @jameslamb (#6096)
  • [python-package] mark EarlyStopException as part of public API @jameslamb (#6095)
  • [python-package] fix mypy errors related to eval result tuples @jameslamb (#6097)
  • update to fmt 10.1.1, fast_double_parser 0.7.0 @jameslamb (#6074)

v4.1.0

7 months ago

Changes

💡 New Features

  • Treat position bias via GAM in LambdaMART @metpavel (#5929)

🐛 Bug Fixes

  • Fix updates in random forest model using GOSS data sample strategy @mjmckp (#6017)
  • [R-package] Fix misdetected objective when passing lgb.Dataset instance to lightgbm() @david-cortes (#6005)
  • [python-package] make it possible to build wheels without internet connection (fixes #5979) @jameslamb (#6042)
  • fix percentile computation for regression objectives @zachary62 (#5848)
  • [CUDA] Set GPU device ID in threads @shiyu1994 (#6028)
  • [R-package] Fix error when passing categorical features to lightgbm() (fixes #6000) @david-cortes (#6003)
  • [R-package] limit number of threads used in tests and examples (fixes #5987) @jameslamb (#5988)

📖 Documentation

  • [python-package] [docs] Update key format of eval_hist in docstring example @Alnusjaponica (#5980)
  • [docs] add vaex-ml to list of external repositories @jameslamb (#6085)
  • [ci] [docs] fix broken ACM links @jameslamb (#6083)
  • [docs] Fix typo in README @kyleengel (#6071)
  • [docs] fix broken links @jameslamb (#6059)
  • Fix Python Dockerfile @GyuminJack (#5984)

🧰 Maintenance

  • Release v4.1.0 @jameslamb (#6076)
  • Remove superfluous todo from gitignore @borchero (#6081)
  • [python-package] simplify processing of pandas data @jameslamb (#6066)
  • [ci] [R-package] test against R 4.3 on Linux and macOS @jameslamb (#6075)
  • reduce verbosity of some log messages @jameslamb (#6073)
  • [python-package] remove CVBooster._append() @jameslamb (#6057)
  • [python-package] use dataclass for CallbackEnv @jameslamb (#6048)
  • [ci] [python-package] add more linting checks @jameslamb (#6049)
  • [ci] prevent lock-threads from locking issues with label 'feature request' @jameslamb (#6047)
  • [ci] add bot to lock inactive issues and PRs @jameslamb (#6037)
  • [ci] fix GPG key download for R Linux jobs (fixes #6038) @jameslamb (#6039)
  • [ci] enforce dask version to be >=2023.5.0 in some builds (fixes #6030) @shiyu1994 (#6032)
  • [ci] [R-package] use {lintr} 3.1 @jameslamb (#5997)
  • [python-package] replace np.find_common_type with np.result_type @jmoralez (#5999)
  • [ci] simplify CODEOWNERS @jameslamb (#5998)
  • [R-package] consolidate testing constants in helpers file @jameslamb (#5992)
  • [R-package] remove unused internal variables @jameslamb (#5991)
  • [ci] use newer h5py in AppVeyor jobs (fixes #5995) @jameslamb (#5996)
  • [python-package] make _InnerPredictor construction stricter @jameslamb (#5961)

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.

v4.0.0

9 months ago

Changes

This release contains all previously-unreleased changes since v3.3.1 over 1.5 years ago (link).

Summary of improvements:

  • totally-rewritten CUDA implementation, and more operations in the CUDA implementation performed on the GPU
  • quantized training can be used for greatly improved training speeds on CPU (paper link)
  • support for C++17
  • Python package:
    • now uses scikit-build-core (link) as its build backend
    • manylinux_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!)
    • much more use of inline type hints, exported with py.typed so any code using LightGBM can benefit
    • support for Python 3.10, 3.11
    • support for pandas nullable types
    • configurable threshold (lgb.early_stopping(..., min_delta=n)) for how much eval metrics must improve to be considered "improved" for early stopping
    • custom objective functions in Dask
    • scikit-learn is no longer a required dependency
    • all callbacks are now pickleable (for better interoperability with e.g. ray, Dask) (thanks @Yard1!)
  • R package:
    • efficient support for more data types in prediction, like dgCMatrix and dsparseMatrix (thanks @david-cortes!)
    • much more idomatic interface... e.g. support for saveRDS() and readRDS() for Booster, print() and summary() methods for Dataset (thanks @david-cortes!)
    • various bug fixes related to multiple competing ways to provide parameters
    • support for R 4.2, 4.3

Summary of breaking changes:

  • Python package:
  • R package:
    • dropped support for Solaris
    • removed most support for passing parameters through ...
    • removed lgb.unloader()
    • switched to predict(newdata, type = ...) in predict(), for consistency with base R and most other machine learning projects

💡 New Features

  • [python-package] add 'pandas' extra @jameslamb (#5937)
  • [CUDA] Add more CUDA Regression Metrics @Xuweijia-buaa (#5924)
  • [python-package] adding max_category_values parameter to create_tree_digraph method (fixes #5687) @moziada (#5818)
  • [c++] support building with Ninja on Linux @jameslamb (#5910)
  • add CMakeLists options to disable building CLI, installing headers @jameslamb (#5880)
  • Add quantized training (CPU part) @shiyu1994 (#5800)
  • [CUDA] Add quantile regression objective for new CUDA version @shiyu1994 (#5605)
  • [CUDA] Add quantile metric for new CUDA version (contribute to #5163) @shiyu1994 (#5665)
  • [python-package] add Booster.set_leaf_output method @jmoralez (#5712)
  • feature: Add serialization of reference dataset @svotaw (#5427)
  • [R-package] Accept factor labels and use their levels @david-cortes (#5341)
  • [CUDA] Add binary logloss metric for new CUDA version @shiyu1994 (#5635)
  • [CUDA] Add binary logloss metric for new CUDA version @shiyu1994 (#5635)
  • Decouple Boosting Types (fixes #3128) @lyf-00 (#4827)
  • [CUDA] Add L2 metric for new CUDA version @shiyu1994 (#5633)
  • [CUDA] Add rmse metric for new CUDA version @shiyu1994 (#5611)
  • Build integrated OpenCL Linux wheels @jgiannuzzi (#5252)
  • [CUDA] Add Poisson regression objective for cuda_exp and refactor objective functions for cuda_exp @shiyu1994 (#5486)
  • [CUDA] Add multiclass_ova objective for cuda_exp @shiyu1994 (#5491)
  • [python-package] add install option to enable printing of time costs @Remy-Luciani (#5497)
  • [python-package][R-package] load parameters from model file (fixes #2613) @jmoralez (#5424)
  • [CUDA] Add multiclass objective for cuda_exp @shiyu1994 (#5473)
  • [CUDA] Add feature interaction constraint for cuda_exp (fix #4785) @shiyu1994 (#5474)
  • [CUDA] Add rank_xendcg objective for cuda_exp @shiyu1994 (#5472)
  • [CUDA] Add fair regression objective for cuda_exp @shiyu1994 (#5469)
  • [CUDA] Add lambdarank objective for cuda_exp @shiyu1994 (#5453)
  • [CUDA] Add Huber regression objective for cuda_exp @shiyu1994 (#5462)
  • [CUDA] Add L1 regression objective for cuda_exp @shiyu1994 (#5457)
  • [CUDA] L2 regression objective for cuda_exp @shiyu1994 (#5452)
  • [CUDA] Add binary objective for cuda_exp @shiyu1994 (#5425)
  • [R-package] Add remainder of prediction funtions @david-cortes (#5312)
  • [python-package] support saving and loading CVBooster (fixes #3556) @nyanp (#5160)
  • feature: Add true streaming APIs to reduce client-side memory usage @svotaw (#5299)
  • [python-package] highlight the path a sample takes through a tree in plot_tree and create_tree_digraph (fixes #4784) @jmoralez (#5119)
  • reproducible parameter alias resolution for wrappers (fixes #5304) @jmoralez (#5338)
  • [CUDA] Initial work for boosting and evaluation with CUDA @shiyu1994 (#5279)
  • [python-package] add validate_features argument to refit @jmoralez (#5331)
  • [python-package] check feature names in predict with dataframe (fixes #812) @jmoralez (#4909)
  • [R-package] Add sparse feature contribution predictions @david-cortes (#5108)
  • [python-package][R-package] allow using feature names when retrieving number of bins @jmoralez (#5116)
  • [R-package] Keep row names in output from predict @david-cortes (#4977)
  • [python] make reset_parameter callback pickleable @StrikerRUS (#5109)
  • [python] make record_evaluation callback pickleable @StrikerRUS (#5107)
  • [python] make log_evaluation callback pickleable @StrikerRUS (#5101)
  • [python] allow to register any custom logger (fixes #4783) @RustingSword (#4880)
  • Load initial scores with binary data files in CLI version @shiyu1994 (#4807)
  • [R-package] Rename weight -> weights @david-cortes (#4975)
  • [CUDA] New CUDA version Part 1 @shiyu1994 (#4630)
  • [python] make early_stopping callback pickleable @Yard1 (#5012)
  • [c-api][python-package][R-package] expose feature num bin @jmoralez (#5048)
  • [python-package] [R-package] propagate the best iteration of cvbooster into the individual boosters @jmoralez (#5066)
  • [python-package] add support for pandas nullable types @jmoralez (#4927)
  • [R-package] Promote objective and init_score to top-level arguments in lightgbm() @david-cortes (#4976)
  • [python] Start supporting Python 3.10 @StrikerRUS (#4893)
  • [python-package] support customizing Dataset creation in Booster.refit() (fixes #3038) @TremaMiguel (#4894)
  • [dask] add support for custom objective functions (fixes #3934) @jameslamb (#4920)
  • [R-package] added argument eval_train_metric to lgb.cv() (fixes #4911) @mayer79 (#4918)
  • Add support for Visual Studio 2022 @StrikerRUS (#4889)
  • Add C API function that returns all parameter names with their aliases @StrikerRUS (#4829)
  • [python][sklearn] respect parameters for predictions in init() and set_params() methods @StrikerRUS (#4822)
  • Add customized parser support @chjinche (#4782)
  • [R-package] Add print() and summary() methods for Booster @david-cortes (#4686)
  • Add 'nrounds' as an alias for 'num_iterations' (fixes #4743) @mikemahoney218 (#4746)
  • [python-package] early stopping min_delta (fixes #2526) @jmoralez (#4580)
  • [python][sklearn] respect objective aliases @StrikerRUS (#4758)
  • [python][sklearn] add n_estimators_ and n_iter_ post-fit attributes @StrikerRUS (#4753)

🔨 Breaking

  • [python-package] make Booster and Dataset 'handle' attributes private (fixes #5313) @jameslamb (#5947)
  • [python-package] remove hard dependency on 'scikit-learn', fix minimal runtime dependencies @jameslamb (#5942)
  • [python-package] [ci] switch to PEP 517 / 518 builds (remove setup.py) (fixes #5061) @jameslamb (#5759)
  • [ci] [python-package] replace 'python setup.py' with a shell script @jameslamb (#5837)
  • [R-package] use C++17 in the CRAN package @jameslamb (#5690)
  • [python-package] make some Booster and Dataset attributes private @jameslamb (#5723)
  • [CUDA] consolidate CUDA versions @jameslamb (#5677)
  • [python-package] make public API members explicit with module-level all variables @jameslamb (#5655)
  • [ci] migrate CI from macOS 10.15 to 11 (fixes #5391) @StrikerRUS (#5396)
  • [ci] switch to manylinux_2_28 for Linux artifacts (fixes #5514, fixes #5589) @jameslamb (#5580)
  • fix: Adjust LGBM_DatasetCreateFromSampledColumn to handle distributed data @svotaw (#5344)
  • [python-package] allow custom weighing in fobj for scikit-learn API (closes #5027) @jmoralez (#5211)
  • [R-package] Use type argument to control prediction types @david-cortes (#5133)
  • [python-package] Use scikit-learn interpretation of negative n_jobs and change default to number of cores @david-cortes (#5105)
  • [python-package] remove Booster.set_attr() and Booster.attr() @jameslamb (#5272)
  • remove support for Solaris (fixes #5216) @jameslamb (#5226)
  • [R-package] stop automatically calculating eval metrics on training data in lightgbm() @jameslamb (#5209)
  • [R-package] remove lgb.unloader() @jameslamb (#5204)
  • [python-package] remove 'fobj' in favor of passing custom objective function in params @TremaMiguel (#5052)
  • [python-package] remove is_reshape argument in Booster.predict (fixes #5115) @jmoralez (#5117)
  • [R-package] Remove reshape argument in predict @david-cortes (#4971)
  • [R-package] Promote number of threads to top-level argument in lightgbm() and change default to number of cores @david-cortes (#4972)
  • [R-package] Rename data -> newdata in predict @david-cortes (#4973)
  • Build Windows artifacts in windows-2019 image instead of vs2017-win2016 @StrikerRUS (#5059)
  • [python-package] use 2d collections for predictions, grads and hess in multiclass custom objective @jmoralez (#4925)
  • [R-package] prefer params to keyword argument in lgb.train() @jameslamb (#5007)
  • [R-package] remove behavior where lightgbm() saves model to disk @david-cortes (#4974)
  • [python-package] make record_evaluation compatible with cv (fixes #4943) @jmoralez (#4947)
  • [python] remove early_stopping_rounds argument of train() and cv() functions @StrikerRUS (#4908)
  • [python] remove evals_result argument of train() function @StrikerRUS (#4882)
  • [python][sklearn] do not replace empty dict with None for evals_result_ @StrikerRUS (#4884)
  • [python] Drop Python 3.6 support @StrikerRUS (#4891)
  • [python] remove verbose_eval argument of train() and cv() functions @StrikerRUS (#4878)
  • [python] remove verbose argument of model_from_string() method of Booster class @StrikerRUS (#4877)
  • [python][sklearn] Remove early_stopping_rounds argument of fit() method @StrikerRUS (#4846)
  • [R-package] remove support for '...' in slice() @jameslamb (#4872)
  • [R-package] remove support for '...' in lgb.Dataset() @jameslamb (#4874)
  • [R-package] remove support for '...' in dim.lgb.Dataset() @jameslamb (#4873)
  • [R-package] remove support for '...' in lgb.train() @jameslamb (#4863)
  • [R-package] remove support for '...' in create_valid() @jameslamb (#4865)
  • [R-package] remove support for 'info' in Dataset @jameslamb (#4866)
  • [R-package] remove Dataset getinfo() @jameslamb (#4864)
  • [R-package] remove support for '...' in lgb.cv() @jameslamb (#4860)
  • [R-package] remove Dataset setinfo() @jameslamb (#4854)
  • [R-package] remove support for '...' in predict() @jameslamb (#4857)
  • [R-package] remove support for '...' in Booster reset_parameter() @jameslamb (#4856)
  • [python][sklearn] unify values of best_iteration for sklearn and standard APIs @StrikerRUS (#4845)
  • [ci] migrate CI from macOS 10.14 to 10.15 and drop support of Mojave @StrikerRUS (#4849)
  • [R-package] enable saving Booster with saveRDS() and loading it with readRDS() (fixes #4296) @david-cortes (#4685)
  • [python][sklearn] remove verbose argument from fit() method @StrikerRUS (#4832)
  • [python] remove learning_rates argument of train() function @StrikerRUS (#4831)
  • [python] remove "auto" value of ylabel argument of plot_metric() function @StrikerRUS (#4818)
  • [python] Remove print_evaluation() function @StrikerRUS (#4819)
  • [python] Remove silent argument @StrikerRUS (#4800)

🚀 Efficiency Improvement

  • Add quantized training (CPU part) @shiyu1994 (#5800)
  • [python-package] replace .values usage with .to_numpy() @superlaut (#5612)
  • clear memory allocated for sampled data when constructing Dataset from text file @xuchuanyin (#4890)
  • [python] Faster categorical column names selection @Neronuser (#4787)
  • [R-package] parallelize compilation in CMake-based builds @jameslamb (#4525)
  • [python-package] simplify Dataset processing of label @jameslamb (#5456)
  • [python-package] make a shallow copy on dataframe rename (fixes #4596) @jmoralez (#5254)
  • [python-package] make a shallow copy when replacing categorical features with codes (fixes #4596) @jmoralez (#5225)
  • [R-package] reduce cost of repeated parameter alias checks @jameslamb (#5141)
  • reduce duplicate computation in poisson, gamma, and tweedie objectives @lorentzenchr (#4950)

🐛 Bug Fixes

  • move LightGBM-vendored json11 into a LightGBM-specific namespace (fixes #5944) @maskedcoder1337 (#5946)
  • [dask] hold ports until training @jmoralez (#5890)
  • update MSBuild solution to Windows SDK v10.0, add inet_pton define (fixes #5856) @jameslamb (#5884)
  • Fix DEBUG-mode GPU builds @GinkoBalboa (#5778)
  • cast data_index as size_t in cuda_row_data to avoid integer overflow @SiNZeRo (#5706)
  • [ci] [R-package] fix clang 15 warning about unqualified calls (fixes #5661) @jameslamb (#5662)
  • Check feature indexes in forced split file (fixes #5517) @btrotta (#5653)
  • fix feature index in Dataset::AddFeaturesFrom (fixes #5410) @jameslamb (#5650)
  • Check feature indexes in forced split file (fixes #5517) @btrotta (#5653)
  • fix feature index in Dataset::AddFeaturesFrom (fixes #5410) @jameslamb (#5650)
  • [ci] [python-package] fix missing import, test that lightgbm can be imported with only required dependencies (fixes #5631) @jameslamb (#5632)
  • Fix OpenMP thread allocation in Linux @svotaw (#5551)
  • [R-package] correctly quote paths on Windows for CMake-based builds @jameslamb (#5607)
  • [ci] [python-package] correct tag on x86_64 wheels @jameslamb (#5598)
  • [tests][dask] fix workers without data test (fixes #5537) @jmoralez (#5544)
  • prefer 'vsnprintf' to 'vsprintf' @jameslamb (#5561)
  • [ci] fix R-package CI jobs and compatibility with OpenMP 15+ (fixes #5549, #5562) @jameslamb (#5563)
  • include parameters from reference dataset on subset (fixes #5402) @jmoralez (#5416)
  • [python-package] ignore training set on early stopping callback (fixes #5354) @jmoralez (#5412)
  • [fix] change the destructor of ScoreUpdater to virtual (fixes #5400) @shiyu1994 (#5403)
  • Add default definition for GetColWiseData and GetColWiseData @shiyu1994 (#5413)
  • Fix potential overflow in linear trees @StrikerRUS (#5395)
  • Use double precision in threaded calculation of linear tree coefficients (fixes #5226) @btrotta (#5368)
  • [R-package] raise an informative error when custom objective produces incorrect output (fixes #5323) @jmoralez (#5329)
  • Clear split info buffer in cost efficient gradient boosting before every iteration (fix partially #3679) @shiyu1994 (#5164)
  • [c++][fix] check nullable of bin mappers in dataset_loader.cpp (fix #5221) @shiyu1994 (#5258)
  • [python] Fix training on subset constructed without params @StrikerRUS (#5213)
  • Check existence of inet_pton for win32 in CMakeLists.txt (fixes #5019) @shiyu1994 (#5159)
  • Fix potential overflow "Multiplication result converted to larger type" @StrikerRUS (#5189)
  • [R-package] ensure that callbacks respect verbosity from params @jameslamb (#5199)
  • fix precision lost in tree's ToIfElse @Grass-CLP (#5187)
  • fix some wrong format specifiers @StrikerRUS (#5190)
  • [R-package] allow use of categorical_features in Dataset when raw data does not have column names (fixes #4374) @jmoralez (#5184)
  • [c-api] check number of features when retrieving number of bins @jmoralez (#5183)
  • [CUDA] Fix integer overflow in cuda row-wise data @shiyu1994 (#5167)
  • [R-package] ensure values in params override keyword arguments to predict() (fixes #4670) @jameslamb (#5122)
  • check nullable of bin_mappers in DatasetLoader::CheckCategoricalFeatureNumBin (fix #5145) @shiyu1994 (#5146)
  • [CUDA] Fix row-wise histogram construction with dense data matrix @shiyu1994 (#5103)
  • [fix] fix duplicate added initial scores for single-leaf trees @shiyu1994 (#5050)
  • [python] fixes for supporting 2d numpy arrays for predictions, grads and hess in multiclass custom objective and eval @StrikerRUS (#5030)
  • CUDATreeLearner: free GPU memory in destructor if any allocated @denmoroz (#4963)
  • Use delete[] where appropriate instead of delete @david-cortes (#4984)
  • Pass train dataset parser config to valid dataset loading parser @chjinche (#4985)
  • [R-package] Fix custom objective detection in print.lgb.Booster() @StrikerRUS (#4941)
  • gpu allocate memory overflow (fixes #4926) @jiapengwen (#4928)
  • [R-package] respect 'verbose' argument in lgb.cv() (fixes #4667) @jameslamb (#4903)
  • [R-package] Apply patch for R4.2 on Windows @shiyu1994 (#4923)
  • [R-package] respect aliases for objective and metric and lgb.train() and lgb.cv() @jameslamb (#4913)
  • [python] raise an informative error instead of segfaulting when custom objective produces incorrect output @yaxxie (#4815)
  • [R-package] fix handling of duplicate parameters (fixes #4521) @jameslamb (#4914)
  • [R-package] update parameter 'verbosity' based on keyword arg 'verbose' @jameslamb (#4899)
  • [R-package] fix CVBooster reset_parameter() method (fixes #4900) @jameslamb (#4901)
  • [python] reset storage in record evaluation callback each time before starting training @StrikerRUS (#4885)
  • [python] reset storages in early stopping callback after finishing training @StrikerRUS (#4868)
  • [R-package] fix --no-build-vignettes option for build-cran-package.sh @jameslamb (#4848)
  • [python][docs] fix type hints for custom functions and remove vague array-like wording @StrikerRUS (#4816)
  • Always respect forced splits, even when feature_fraction < 1.0 (fixes #4601) @tongwu-msft (#4725)
  • Reset OpenMP thread number if num_threads <= 0 @hzy46 (#4704)

📖 Documentation

  • [docs] fix broken link to contributor GitHub account @jameslamb (#5959)
  • [docs] add versionadded notes for v4.0.0 features @jameslamb (#5948)
  • [docs] Add scikit-learn for intersphinx (fixes #5954) @thomasjpfan (#5956)
  • [docs] more fixes for broken links @jameslamb (#5941)
  • [docs] remove outdated information in Python install docs @jameslamb (#5938)
  • [docs] fix broken links in docs @jameslamb (#5939)
  • [docs] add quantized training paper to docs @jameslamb (#5923)
  • [docs] Update Quick Start @jaceklaskowski (#5900)
  • [docs] recommend a more efficient source installation of the python package @jameslamb (#5881)
  • adjusted bagging_freq parameter description @moziada (#5698)
  • [docs] remove unnecessary interactivity in 'docker run' instructions @jameslamb (#5692)
  • [docs] [R-package] mention {bonsai} in the docs @jameslamb (#5652)
  • [docs] encourage use of releases for GUI-only installations @jameslamb (#5649)
  • [docs] update CPU dockerfiles (fixes #5550) @jameslamb (#5601)
  • [docs] update cran-comments.md for v3.3.4 release @jameslamb (#5646)
  • [docs] add postgresml to list of external repos @jameslamb (#5565)
  • [docs] Improve docs: fix consistency of dots in C API and add notes about new time-costs Python-package build option @StrikerRUS (#5554)
  • [R-package] [docs] use CRAN canonical form for package links @jameslamb (#5504)
  • [docs] Fix link to Optuna's LightGBMTuner example @knshnb (#5519)
  • [docs]fix a typo in docs/Features.rst @JiantingFeng (#5463)
  • Use ROC-AUC metric for classification model in examples @Green-16 (#5440)
  • [docs] Fix links @StrikerRUS (#5451)
  • [R-package] Fix docstrings for predict functions @StrikerRUS (#5444)
  • [R-package] [docs] clarify shape of predictions @jameslamb (#5384)
  • [python-package] Improve readme on experimental cuda usage @thomasaarholt (#5386)
  • [docs] [R-package] document how to regenerate roxygen docs @jameslamb (#5382)
  • [R-package] [docs] fix typo in documentation on init_model @sebffischer (#5379)
  • [docs] [R-package] upgrade to roxygen2 7.2.1 @jameslamb (#5381)
  • [ci] make check-docs job compatible with rstcheck 6.x @jameslamb (#5388)
  • [docs][python] Fix return types in docstrings @StrikerRUS (#5326)
  • [docs] set language = 'en' in Sphinx config @jameslamb (#5322)
  • [R-package] [docs] document difference between lightgbm() and lgb.train() (fixes #5203) @jameslamb (#5273)
  • [docs] Use https links in docs @StrikerRUS (#5284)
  • [R-package] [docs] upgrade docs to roxygen2==7.2.0 @jameslamb (#5251)
  • [docs] Update broken links in docs @StrikerRUS (#5265)
  • [docs] add Microsoft security policy (fixes #5235) @jameslamb (#5264)
  • [R-package] update roles in DESCRIPTION @StrikerRUS (#5192)
  • [docs] Fix formula in path smoothing docs (fixes #5139) @samFarrellDay (#5154)
  • [docs] Document behaviour of the first linear estimator @Pablo-Davila (#5132)
  • [docs] use 'docker run --rm' in valgrind instructions @jameslamb (#5127)
  • [docs] use 'docker run --rm' in autoconf instructions @jameslamb (#5125)
  • [docs] Improve rendering of class properties in docs @StrikerRUS (#5078)
  • [python-package][docs] Booster eval methods accept list of callables @TremaMiguel (#5054)
  • [docs] update categorical feature description in Advanced Topics @StrikerRUS (#5044)
  • Correct documentation for sparse predictions @david-cortes (#4979)
  • [docs][R-package] Use direct link for the list of supported objectives @StrikerRUS (#5029)
  • [Docs] Weights non-negative for train data @TremaMiguel (#5013)
  • [docs] improve docs for sklearn wrapper @StrikerRUS (#5026)
  • [docs] clarify that categorical features will be converted to integers internally @jmoralez (#4959)
  • [docs] clarify that custom eval functions are not only used on training data @jameslamb (#5011)
  • [docs] document rounding behavior of floating point numbers in categorical features @StrikerRUS (#5009)
  • Change docs for feval @akshitadixit (#5002)
  • [docs] document conda-forge channel preference over default one and describe possible workaround for OpenMP conflicts in FAQ @StrikerRUS (#4994)
  • Add Nyoka to README @StrikerRUS (#4992)
  • [docs] minor docs improvements @StrikerRUS (#4938)
  • [R-package] [docs] fix calculation of R test coverage (fixes #4919) @jameslamb (#4922)
  • [docs] Update link to FLAML code example @qingyun-wu (#4892)
  • [R-package] [docs] add Michael Mayer to DESCRIPTION @jameslamb (#4867)
  • [docs] document that pred_early_stop can be used only in normal and raw scores prediction @StrikerRUS (#4823)
  • [R-package] [docs] add intro vignette (#3946) @jameslamb (#4775)
  • [docs] fix broken SynapseML link @StrikerRUS (#4795)
  • [docs] [dask] Add return information to Dask fit() docs (fixes #4402) @jameslamb (#4716)
  • [docs] add specific estimator names to sklearn fit() docs @jameslamb (#4774)
  • [docs] [R-package] update cran-comments for v3.3.1 release @jameslamb (#4738)
  • [ci] only use conda-forge when installing R packages in docs builds @jameslamb (#4767)
  • [docs] improve docs about nthreads parameter @StrikerRUS (#4756)
  • [docs] update link to LightGBM Ruby @StrikerRUS (#4740)
  • [docs] fix broken SynapseML link @jameslamb (#4712)

🧰 Maintenance

  • [c++] virtual destructor for gradient discretizer @shiyu1994 (#5965)
  • [python-package] avoid data_has_header check in predict() @jameslamb (#5970)
  • [ci] [python-package] Add CI job testing compatibility with oldest possible versions @jameslamb (#5936)
  • [ci] add Python 3.11 test coverage @jameslamb (#5922)
  • [ci] increase valgrind timeout to 6 hours @jameslamb (#5953)
  • [python-package] ignore pip cache dir in build-python.sh @jameslamb (#5945)
  • [ci] remove brew update-reset again (fixes #5670) @jameslamb (#5925)
  • [python-package] ensure 'build-python.sh' always reinstalls (fixes #5906) @jameslamb (#5907)
  • [python-package] remove unnecessary Boost files from sdists @jameslamb (#5912)
  • [ci] stop relying on cran.microsoft.com in CI jobs @jameslamb (#5909)
  • [ci] use an MRAN snapshot for R 3.6 Linux jobs (fixes #5898) @jameslamb (#5903)
  • [ci] [python-package] use ruff, enforce flake8-bugbear and flake8-comprehensions checks @jameslamb (#5871)
  • [ci] [python-package] fix mypy errors in sklearn.py @jameslamb (#5886)
  • Add SWIG byte pointers @svotaw (#5832)
  • [ci] [python-package] fix mypy error in Dataset.set_categorical_feature() @jameslamb (#5883)
  • [ci] fix wheel renaming in test.sh @jameslamb (#5877)
  • [ci] [python-package] tell mypy 'auto' has a special meaning for feature_name and categorical_feature @jameslamb (#5874)
  • [ci] [python-package] move tool configuration to pyproject.toml @jameslamb (#5872)
  • [ci] use Python 3.11 in linting CI job @jameslamb (#5873)
  • [ci] use lowercase library names in linker flags @characat0 (#5870)
  • [ci] minor fixes to build-python.sh @jameslamb (#5869)
  • [ci] [python-package] resolve remaining mypy errors in dask.py @jameslamb (#5858)
  • [ci] [python-package] check distributions with pydistcheck @jameslamb (#5838)
  • [ci] remove R 3.6 macOS CI jobs @jameslamb (#5859)
  • [ci] [python-package] fix mypy errors about Dataset._set_init_score_by_predictor() @jameslamb (#5850)
  • [python-package] [ci] fix mypy errors in Booster.__inner_predict() @jameslamb (#5852)
  • [ci] [python-package] fix mypy errors in Booster.refit() @jameslamb (#5853)
  • [ci] add tests on cv() with an init_model @jameslamb (#5851)
  • [ci] [python-package] fix mypy error about dask._predict_part() @jameslamb (#5849)
  • [ci] [python-package] fix mypy error about return_cvbooster in cv() @jameslamb (#5845)
  • [python-package] move validation up earlier in cv() and train() @jameslamb (#5836)
  • [python-package] remove default arguments in internal functions @jameslamb (#5834)
  • [python-package] fix mypy error about used_indices in Dataset.subset() @jameslamb (#5833)
  • [ci] put a temporary ceiling on pip @jameslamb (#5835)
  • [ci] [dask] fix mypy errors about predict() signature @jameslamb (#5827)
  • [python-package] fix mypy error in Dataset.__init_from_list_np2d() @jameslamb (#5826)
  • [ci] [python-package] fix mypy errors in cv() @jameslamb (#5828)
  • [python-package] [docs] complete type annotations for scikit-learn fit() methods @jameslamb (#5816)
  • [ci] remove pin on tinytex in R CI jobs @jameslamb (#5821)
  • [ci] moving linting into small scripts (fixes #5142) @jameslamb (#5809)
  • [python-package] add more type annotations in basic.py @jameslamb (#5812)
  • [python-package] add type annotations on some array methods in basic.py @jameslamb (#5813)
  • [python-package] add type annotations on Booster.trees_to_dataframe() inner functions @jameslamb (#5811)
  • [python-package] fix type annotations for eval result tracking @jameslamb (#5793)
  • [python-package] fix mypy error in Booster.get_split_value_histogram() @jameslamb (#5794)
  • [python-package] fix mypy errors about early stopping rounds @jameslamb (#5795)
  • [python-package] fix mypy errors about custom eval and metric functions @jameslamb (#5790)
  • [python-packages] [docs] add type hints and define 'array-like' for X, y, group in scikit-learn interface @jameslamb (#5757)
  • remove unused variables from bin.cpp @jmoralez (#5801)
  • [ci] fix LaTeX tools installation in R jobs (fixes #5802) @jameslamb (#5807)
  • [python-package] fix mypy errors about scikit-learn properties @jameslamb (#5788)
  • [python-package] add hint on dtypes in Dataset.set_field() @jameslamb (#5787)
  • [python-package] replace uses of scipy.sparse.issparse() with isinstance() @jameslamb (#5784)
  • [python-package] fix mypy error about cpu_count() methods @jameslamb (#5786)
  • [python-package] fix mypy errors about Dataset.params @jameslamb (#5780)
  • [python-package] ignore some mypy errors in _DaskLGBMModel @jameslamb (#5774)
  • [python-package] fix mypy errors about ctypes pointers @jameslamb (#5779)
  • [python-package] fix mypy error about dask._HostWorkers.eq() @jameslamb (#5782)
  • [python-package] fix mypy errors about validation sets in sklearn.py @jameslamb (#5724)
  • [python-package] fix mypy errors about missing annotations and incompatible types @IdoKendo (#5672)
  • [python-package] add type hints on sklearn properties @jameslamb (#5771)
  • [python-package] add type hints for functions accepting dtypes @jameslamb (#5773)
  • [ci] isolate c_api_test library-loading from Python source tree @jameslamb (#5761)
  • [python-package] [dask] add type annotations on dask._HostWorkers @jameslamb (#5766)
  • [python-package] [dask] fix mypy errors about Dask fit() return types @jameslamb (#5756)
  • [python-package] use keyword arguments in predict() calls @jameslamb (#5755)
  • [python-package] add type hints on label @jameslamb (#5754)
  • [python-package] add type hints on group, init_score, and weight @jameslamb (#5753)
  • [python-package] add type hints on raw data passed to Dataset and Booster @jameslamb (#5752)
  • [python-package] add type hints on feature_name and categorical_feature in sklearn interface @jameslamb (#5747)
  • [python-package] add type hints on fit() return and callbacks in sklearn.py @jameslamb (#5748)
  • [python-package] add type hints on Booster predict() methods @jameslamb (#5749)
  • [python-package] add more type hints in basic.py @jameslamb (#5729)
  • [python-package] fix mypy error about ctypes array creation @jameslamb (#5726)
  • [python-package] add type hints on Dataset feature processing @jameslamb (#5745)
  • [ci] speed up conda setup for macOS and Linux jobs @jameslamb (#5743)
  • [python-package] remove default values in internal functions @jameslamb (#5730)
  • [python-package] use _DatasetHandle type hint @jameslamb (#5740)
  • [ci] skip Dask tests on GPU builds @jameslamb (#5741)
  • [python-package] fix _LGBM_CustomMetricFunction typing @Deimos357 (#5736)
  • [python-package] fix mypy errors about Dataset handle @jameslamb (#5722)
  • [python-package] fix mypy errors about cv() internals @jameslamb (#5725)
  • [python-package] change types in sklearn.py initializations @jameslamb (#5718)
  • [python-package] [dask] fix mypy errors regarding predict_proba @IdoKendo (#5728)
  • [python-package] fix mypy errors about custom eval functions in sklearn.py @jameslamb (#5721)
  • [python-package] fix mypy error about log callback @jameslamb (#5720)
  • [python-package] fix mypy errors around eval metrics in sklearn.py @jameslamb (#5719)
  • [python-package] fix mypy errors about _InnerPredictor @jameslamb (#5714)
  • [dask] fix mypy errors about padded eval_results @jameslamb (#5716)
  • [python-package] fix mypy errors in compat.py and libpath.py @jameslamb (#5711)
  • [python-package] add more type hints in sklearn.py @jameslamb (#5710)
  • [python-package] add type hints on plotting code @jameslamb (#5708)
  • [ci] [python-package] enforce 'twine check' and 'check-wheel-contents' on Python distributions @jameslamb (#5707)
  • [python-package] declare the use of inline type hints @jameslamb (#5709)
  • [python-package] remove some inner function definitions @jameslamb (#5704)
  • [python-package] add more type hints @jameslamb (#5694)
  • [ci] restore flake8 checks @jameslamb (#5703)
  • [python-package] Fix mypy errors for fit() incompatible signature @IdoKendo (#5679)
  • [R-package] discourage use of regex for fixed string comparisons @jameslamb (#5685)
  • [ci] get clang-15 from bookworm repository (fixes #5688) @jameslamb (#5689)
  • [ci] speed up conda setup for some jobs @jameslamb (#5668)
  • bump development version to v3.3.5.99 @jameslamb (#5681)
  • [python-package] Fix mypy errors for predict() method @IdoKendo (#5678)
  • [python-package] fix mypy errors for eval_at and basic @IdoKendo (#5674)
  • [ci] [python-package] enforce flake8 checks (fixes #5566) @jameslamb (#5659)
  • [python-package] remove Dataset.feature_penalty @jameslamb (#5656)
  • [ci] fix brew errors in R macOS jobs (fixes #5670) @jameslamb (#5671)
  • [ci] run r-package Linux jobs in containers @jameslamb (#5638)
  • [ci][dask][gpu] Run Dask tests with LightGBM GPU version @jgiannuzzi (#5292)
  • [python-package] prefix internal objects with '_' @jameslamb (#5654)
  • [ci] speed up Windows jobs (fixes #5647) @jameslamb (#5648)
  • [ci] automatically cancel GitHub Actions runs for outdated commits @jameslamb (#5651)
  • [ci][dask][gpu] Run Dask tests with LightGBM GPU version @jgiannuzzi (#5292)
  • [python-package] prefix internal objects with '_' @jameslamb (#5654)
  • [ci] speed up Windows jobs (fixes #5647) @jameslamb (#5648)
  • [ci] automatically cancel GitHub Actions runs for outdated commits @jameslamb (#5651)
  • [ci] use LightGBM CI image for building aarch64 wheels (fixes #5595) @jameslamb (#5622)
  • [ci] allow ubuntu-latest to float for some GitHub Actions jobs @jameslamb (#5644)
  • [ci] fix locale-setting in jobs running in ubuntu container @jameslamb (#5643)
  • [ci] make GitHub Actions branch protection stricter (fixes #5501) @jameslamb (#5645)
  • [ci] Use Ubuntu 22.04 as ubuntu-latest at CI (fixes #5186) @StrikerRUS (#5288)
  • [tests][python-package] remove remaining tests using load_boston (fixes #4793) @jmoralez (#5581)
  • [python-package] prefix c_int_array and c_float_array with _ @OmarManzoor (#5614)
  • [ci] test against R 4.2.2 @jameslamb (#5621)
  • [python-package] prefix basic.convert_from_sliced_object with _ @OmarManzoor (#5613)
  • [ci] detect non-default dynamic symbols in check_dynamic_dependencies.py @jameslamb (#5610)
  • [ci] add docs and specific error messages in check_dynamic_dependencies.py @jameslamb (#5582)
  • [ci] update versions of GitHub Actions @jameslamb (#5590)
  • [swig] switch to SWIG_ADD_LIBRARY() in CMakeLists.txt (fixes #5586) @shogohida (#5603)
  • [ci] switch from MiKTeX to tinytex on Windows R jobs (fixes #5600) @jameslamb (#5602)
  • [python-package] prefix several internal functions with _ @Madnex (#5545)
  • [python-package] remove unused imports @jameslamb (#5559)
  • [ci] prefer CPython in Linux and macOS test environment @StrikerRUS (#5555)
  • [docs] bump development version to 3.3.3.99 @jameslamb (#5533)
  • [ci] upgrade macOS_regular job to Python 3.9 (fixes #5569) @jameslamb (#5570)
  • [tests] Fix cpp streaming data tests @StrikerRUS (#5481)
  • [python-package] prefix is_numpy_column_array with _ @Madnex (#5531)
  • renamed cur_cat => cur_cat_idx and added some comments @zyxue (#5522)
  • [python-package] prefix cast_numpy_array_to_dtype with _ @Madnex (#5532)
  • suppress alias warnings with verbosity<0 (fixes #4518) @jmoralez (#5253)
  • renamed tmp_num_sample_values to non_na_cnt @zyxue (#5521)
  • [ci] run Appveyor checks on PRs targeting release/ branches @jameslamb (#5528)
  • [ci] run CI on pull requests targeting release/ branches @jameslamb (#5527)
  • [python-package] prefix is_numpy_1d_array with _ @Madnex (#5520)
  • replace pandas.Series.iteritems with pandas.Series.items @jmoralez (#5506)
  • [ci] prefer CPython in Windows test environment and use safer approach for cleaning up network (fixes #5509) @jameslamb (#5510)
  • [ci] test against R 4.2 for macOS and Linux CI jobs @jameslamb (#5484)
  • [R-package] improve safety of index selection in plotting @jameslamb (#5485)
  • [ci] [R-package] ensure that MSVC jobs fail when tests fail (fixes #5439) @jameslamb (#5448)
  • [python-package] add more hints in sklearn.py @jameslamb (#5460)
  • [R-package] [ci] restore R 3.6 Windows cran CI job (fixes #5036) @jameslamb (#5479)
  • Remove redundant whitespaces @ch3rn0v (#5480)
  • fix references to 'object function' @jameslamb (#5468)
  • [python] Fix typehints in Sequence API @StrikerRUS (#5465)
  • fix: Revert leftover debugging in streaming test @svotaw (#5467)
  • Fix CUDA #ifndef guards @StrikerRUS (#5466)
  • [python-package] add type hints on Dataset constructors @jameslamb (#5458)
  • Add streaming concurrency tests @svotaw (#5437)
  • Rename Metadata num_classes to be more clear @svotaw (#5461)
  • [R-package] fix function references in error messages @jameslamb (#5455)
  • [python-package] fix type hints on ctypes array converters @jameslamb (#5446)
  • [python-package] fix mypy errors about callbacks @jameslamb (#5450)
  • [python-package] add type hints on empty initializations @jameslamb (#5445)
  • [python-package] fix mypy error about type change in Dataset.feature_num_bin() @jameslamb (#5447)
  • [ci][fix] Fix cuda_exp ci @shiyu1994 (#5438)
  • [python] remove unused import @StrikerRUS (#5443)
  • [ci] bump CUDA version from 11.7.0 to 11.7.1 at CI @StrikerRUS (#5442)
  • [python-package] add type hints on Booster eval methods @jameslamb (#5433)
  • update tree to if-else @jmoralez (#5422)
  • [ci] bump CUDA version from 11.6.2 to 11.7.0 at CI @StrikerRUS (#5287)
  • [python-package] add more type hints on Dataset @jameslamb (#5431)
  • [python-package] add more type hints on Booster @jameslamb (#5432)
  • [ci] increase valgrind bytes lost limit to 352 @jameslamb (#5429)
  • [python] Prefix basic.is_numeric() with _ @ak04p (#5421)
  • [ci] increase valgrind timeout to 5 hours @jameslamb (#5414)
  • [python-package] add more type hints in basic.py @jameslamb (#5407)
  • [python-package] prefix NUMERIC_TYPES with _ to make it a internal object @thomasjpfan (#5409)
  • [python-package] add type hints on Booster.save_model() @jameslamb (#5406)
  • Minor CUDA cleanup @StrikerRUS (#5394)
  • [ci] temporarily pin scipy version and fix Python linting error @StrikerRUS (#5398)
  • [python-package] add type hints on some functions in basic.py @makquel (#5362)
  • [python-package] add more type hints on Booster @jameslamb (#5360)
  • [python-package] make library-loading stricter @jameslamb (#5357)
  • [python-package] add type hints on Booster.update() @jameslamb (#5359)
  • [python-package] add more type hints on basic.py @jameslamb (#5356)
  • [python-package] add type hints on Dataset @jameslamb (#5353)
  • [python-package] remove inner function _construct_dataset() in LGBMModel.fiit() @jameslamb (#5333)
  • [python-package] add type hints on predict() methods @jameslamb (#5334)
  • [python-package] add more type hints in basic.py @jameslamb (#5330)
  • [ci][R-package] Minor refactoring for lintr code @StrikerRUS (#5327)
  • [python-package] add more type hints in engine.py @jameslamb (#5301)
  • [ci] [R-package] Add string_boundary_linter @CuriousCorrelation (#5324)
  • [python-package] add more type hints on Booster @jameslamb (#5309)
  • [ci] [R-package] Add paste_linter @CuriousCorrelation (#5320)
  • [ci] [R-package] Add duplicate_argument_linter @SaumyaBhushan (#5310)
  • [ci] [R-package] Add a few more linters @CuriousCorrelation (#5311)
  • [ci] [R-package] Add class_equals linter @CuriousCorrelation (#5307)
  • [python][sklearn] Simplify params handling in predict() with _choose_param_value() @StrikerRUS (#5308)
  • [ci] [R-package] Add any_is_na_linter @CuriousCorrelation (#5306)
  • [python-package] add some type hints on Booster @jameslamb (#5302)
  • [python] preserve None in _choose_param_value() @jameslamb (#5289)
  • [ci] Install PoCL in Docker for old Ubuntu 14.04 @StrikerRUS (#5286)
  • [R-package] Specify concrete linting rule that is being ignored via nolint mark @StrikerRUS (#5300)
  • [python-package] add type hints on cv() @jameslamb (#5271)
  • [ci] [R-package] upgrade to lintr v3.0 (fixes #5228) @jameslamb (#5294)
  • [ci] Pin lintr to <3.0 @jgiannuzzi (#5290)
  • [ci] Run Linux OpenCL tests against POCL instead of the AMD App SDK @jgiannuzzi (#5282)
  • [tests][python] Make test that checks original pandas data isn't modified more strict @StrikerRUS (#5267)
  • [python] add more type hints in basic.py @jameslamb (#5255)
  • [python] add more type hints on LGBMModel methods @jameslamb (#5239)
  • [R-package] address linter warnings about portable paths @jameslamb (#5249)
  • [R-package] [ci] silence more logs in tests (fixes #4862) @jameslamb (#5250)
  • Remove leftovers after the drop of Solaris support @StrikerRUS (#5248)
  • [python] add type hints on sklearn metric and eval wrappers @jameslamb (#5238)
  • [R-package] silence logs in print(), show(), summary() tests @jameslamb (#5237)
  • [R-package] standardize style for placement of braces @jameslamb (#5240)
  • [R-package] remove semicolon in R code @jameslamb (#5232)
  • [R-package] remove Solaris reference in test message @jameslamb (#5231)
  • [R-package] silence more logs in unit tests @jameslamb (#5227)
  • [ci] switch CRAN mirror to RStudio @jameslamb (#5230)
  • Cleanup codeowners @StrikerRUS (#5215)
  • [R-package] minor improvements on weight demo @jmoralez (#5212)
  • [ci] fix R Hub token @jameslamb (#5210)
  • [R-package] silence more logs in tests @jameslamb (#5208)
  • [ci] Prevent Python downgrading to pypy on Windows (2) @StrikerRUS (#5198)
  • [ci] Prevent Python downgrading to pypy on Windows @StrikerRUS (#5197)
  • [ci] fix git checkout for comment-triggered CI jobs @jameslamb (#5169)
  • [python] remove unused import from basic.py @StrikerRUS (#5188)
  • [tests] replace fobj with custom objective in test comments and make tests stricter @StrikerRUS (#5173)
  • [ci] Update version of Azure REST API @StrikerRUS (#5172)
  • [ci] skip auto-injected tasks at Azure Pipelines @StrikerRUS (#5175)
  • fix typo in CEGB method name @jameslamb (#5168)
  • [ci] temporarily pin Azure Devops jobs to ubuntu 20.04 @jameslamb (#5174)
  • [ci] fix git checkout for CI jobs (fixes #5151) @jameslamb (#5152)
  • [ci] bump CUDA version from 11.5.1 to 11.6.2 at CI @StrikerRUS (#5149)
  • [python] Use predefined constant in feature importance type comparison instead of raw int literal @StrikerRUS (#5148)
  • [ci] update to R 4.1.3 and use macOS-latest for R jobs (fixes #4990) @jameslamb (#5137)
  • [ci] have no-response bot post as github-actions user @jameslamb (#5136)
  • [ci] fail R macOS CI jobs earlier when installations fail @jameslamb (#5129)
  • [ci] use lee-dohm/no-response to close stale issues (fixes #5060) @jameslamb (#5120)
  • [ci] Remove temp workaround for graphviz installation @StrikerRUS (#5126)
  • [R-package] rename internal callback functions @mayer79 (#5123)
  • [R-package] ensure boosting happens in tests on small datasets @jameslamb (#5121)
  • [R-package] Add missed packages into dependencies list @StrikerRUS (#5118)
  • [R-package] add assertions to test on lightgbm() weights @jameslamb (#5110)
  • Log warnings for number of bins of categorical features @shiyu1994 (#4448)
  • clarify no-meaningful-features warning in Dataset construction (fixes #5081) @jameslamb (#5083)
  • [ci] Add text file with GitHub commit hash to nightly builds @StrikerRUS (#5082)
  • [ci] remove Visual Studio 2017 CI job for R-package @StrikerRUS (#5079)
  • [python-package] Better column dtype logging when column has "bad dtype" @hsorsky (#5065)
  • [ci] update CODEOWNERS @jameslamb (#5063)
  • [ci] fix current master fails with graphviz-related error @StrikerRUS (#5068)
  • [ci] temporarily remove R3.6 CRAN CI build @jameslamb (#5049)
  • [tests][python] move tests that use train() function defined in engine.py from test_basic.py to test_engine.py @StrikerRUS (#5034)
  • [R-package] remove internal function lgb.check.obj() @jameslamb (#5021)
  • [ci] use Python 3.8 for bdist CI job in old Ubuntu container @StrikerRUS (#5022)
  • [R-package] raise informative errors directly when Booster creation fails @jameslamb (#5014)
  • [ci] [docs] use miniforge for readthedocs builds (fixes #4954) @jameslamb (#4957)
  • [ci] Enclose Python versions in quotes in config yml files @StrikerRUS (#5015)
  • [python] enforce a floor of Python 3.6 (fixes #5004) @PyVCEchecker (#5006)
  • Update versions of LightGBM dependencies @StrikerRUS (#4935)
  • [tests][python] remove compatibility code for old versions in tests @StrikerRUS (#4978)
  • [ci] use conda-forge in Windows CI jobs and Docker images @StrikerRUS (#4993)
  • [ci] use latest tag again for Ubuntu 14 CI Docker @StrikerRUS (#5001)
  • [ci] use conda-forge in Linux and macOS CI jobs @jameslamb (#4953)
  • [ci] upgrade to R 4.1.2 in CI, change approach to macOS-latest R CI builds (fixes #4988) @jameslamb (#4989)
  • [ci] bump CUDA version from 11.5.0 to 11.5.1 at CI @StrikerRUS (#4967)
  • [ci] use -1 for exit code in case of failure @StrikerRUS (#4939)
  • [tests][R-package] use one # symbol for comments @StrikerRUS (#4940)
  • [ci] bump CUDA version from 11.4.2 to 11.5.0 at CI @StrikerRUS (#4937)
  • [ci] Bump version for development @StrikerRUS (#4933)
  • [R-package] [tests] remove uses of testthat::context() @jameslamb (#4915)
  • [R-package][tests] remove uses of testthat::expect_is() @jameslamb (#4916)
  • [R-package] remove unnecessary comments and fix typos in comments @jameslamb (#4902)
  • [R-package] reduce verbosity in tests using lgb.train() @jameslamb (#4896)
  • [tests][python-package] change boston dataset to synthetic dataset in tests that don't check score @jmoralez (#4895)
  • [R-package] reduce verbosity in some unit tests @jameslamb (#4879)
  • [R-package] remove unused callback cb.reset.parameter @jameslamb (#4871)
  • [python-package][dask] handle failures parsing worker host names @jameslamb (#4852)
  • [python-package] [dask] fix mypy error about worker_addresses @jameslamb (#4851)
  • [python] remove workaround for UnboundLocalError in early stopping callback for Python 2 @StrikerRUS (#4855)
  • [python-package] remove unused imports @jameslamb (#4850)
  • [python-package] fix mypy errors in engine.py @jameslamb (#4839)
  • [python-package] [dask] fix mypy errors from dask.py docstrings @jameslamb (#4844)
  • [python-package] fix mypy errors in sklearn.py @jameslamb (#4837)
  • [tests][dask] fix argument names in custom eval function in Dask test @StrikerRUS (#4833)
  • [python-package] fix mypy errors in plotting.py @jameslamb (#4838)
  • [python-package] fix mypy error about missing type hint in dask.py @jameslamb (#4840)
  • [python-package] fix mypy errors in compat.py and setup.py @jameslamb (#4836)
  • [docs][python] simplify mocking in docs @StrikerRUS (#4830)
  • [python] add type hints to _compare_params_for_warning() and make it reusable @StrikerRUS (#4824)
  • [R-package] Move R6 to Imports @david-cortes (#4812)
  • [ci] Fix CI job for R artifact @StrikerRUS (#4811)
  • [ci] fix getting status of optional workflows in PRs with a lot of comments @StrikerRUS (#4806)
  • [python] add type hints for custom objective and metric functions in scikit-learn interface @jameslamb (#4547)
  • [c_api] Improve ANSI compatibility by avoiding <stdbool.h> @drewmiller (#4697)
  • [ci] ignore CMakeLint errors related to package names @StrikerRUS (#4801)
  • [ci] fix CMakeLint errors related to function naming case @StrikerRUS (#4794)
  • [ci] simplify processing of CMAKE_CUDA_FLAGS variable in CMakeLists.txt @StrikerRUS (#4799)
  • [ci] fix CMakeLint linelength errors @StrikerRUS (#4796)
  • [ci] use pure endif() and endfunction() without expression inside in CMakeLists.txt @StrikerRUS (#4798)
  • cmake: use object library to avoid duplicate compilation. @cyfdecyf (#4489)
  • Suppress categorical warning (fixes #3379) @hzy46 (#4768)
  • [ci][tests][python] remove assertion for filename that is no longer true with new version of graphviz @StrikerRUS (#4778)
  • [ci] Revert temp workaround for freetype version @StrikerRUS (#4776)
  • [ci] increase timeout for valgrind job to 240 minutes @jameslamb (#4773)
  • [python] improve warning message about aliases in cv() function @StrikerRUS (#4766)
  • [ci] Temporary pin dask version at CI @StrikerRUS (#4770)
  • [ci] use wch1/r-debug image in Solaris tests @jameslamb (#4765)
  • [ci] upgrade actions/checkout to v2.4.0 @jameslamb (#4763)
  • [docs][python] add datatable to the mocked modules during docs building process and sort them alphabetically @StrikerRUS (#4750)
  • [R-package] allow use of custom R executable when building CRAN package @jameslamb (#4754)
  • [R-package] remove temporary files created in configure.win @jameslamb (#4752)
  • [ci] indicate support of Monterey @StrikerRUS (#4732)
  • [python] Make dummy classes constructible with any arguments @StrikerRUS (#4749)
  • [ci] Temporary pin freetype version at Windows CI @StrikerRUS (#4747)
  • Remove checks for label when loading dataset from binary file because label is ignored in that case @StrikerRUS (#4737)
  • [tests][python] add test for non-serializable callback @StrikerRUS (#4741)
  • Improve warning wordings @StrikerRUS (#4731)
  • [ci] Bump version for development @StrikerRUS (#4730)
  • Add some warnings when loading dataset from binary file @StrikerRUS (#4724)

v3.3.5

1 year ago

Changes

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.

💡 New Features

None

🔨 Breaking

None

🚀 Efficiency Improvement

None

🐛 Bug Fixes

  • [ci] [R-package] fix clang 15 warning about unqualified calls (fixes #5661) @jameslamb (#662)

📖 Documentation

None

🧰 Maintenance

None

v3.3.4

1 year ago

Changes

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.

💡 New Features

None

🔨 Breaking

None

🚀 Efficiency Improvement

None

🐛 Bug Fixes

  • prefer 'vsnprintf' to 'vsprintf' @jameslamb (#5561)

📖 Documentation

None

🧰 Maintenance

  • [ci] test against R 4.2.2 @jameslamb (#5621)

v3.3.3

1 year ago

Changes

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.

💡 New Features

  • [PARTIALLY: only for R-package] Add support for Visual Studio 2022 @StrikerRUS (#4889)

🔨 Breaking

None

🚀 Efficiency Improvement

None

🐛 Bug Fixes

  • Check existence of inet_pton for win32 in CMakeLists.txt (fixes #5019) @shiyu1994 (#5159)
  • [ci] [R-package] use R 4.2.1 in Windows CI jobs (fixes #4881) @jameslamb (#5503)
  • [R-package] fix test on non-ASCII features in non-UTF8 locales @jameslamb (#5526)

📖 Documentation

None

🧰 Maintenance

  • [ci] run Appveyor checks on PRs targeting release/ branches @jameslamb (#5528)
  • [ci] run CI on pull requests targeting release/ branches @jameslamb (#5527)
  • [ci] [R-package] ensure that MSVC jobs fail when tests fail (fixes #5439) @jameslamb (#5448)

v3.3.2

2 years ago

Changes

🐛 Bug Fixes

  • [R-package] Apply patch for R4.2 on Windows @shiyu1994 (#4923)

📖 Documentation

  • [docs] [R-package] update cran-comments for v3.3.1 release @jameslamb (#4738)

🧰 Maintenance

  • [ci] Temporary pin dask version at CI @StrikerRUS (#4770)

v3.3.1

2 years ago

Changes

💡 New Features

  • [R-package] Expand user paths in file names @david-cortes (#4687)

🐛 Bug Fixes

  • [python][sklearn] Allow non-serializable objects in callbacks argument @StrikerRUS (#4723)
  • Fix ASAN issues with std::function usage @david-cortes (#4673)
  • fix behavior for default objective and metric @StrikerRUS (#4660)

📖 Documentation

  • [docs] Add Tong Wu and Zhiyuan He as code owners @shiyu1994 (#4717)
  • [docs] fix R API link to point to the current version of docs @StrikerRUS (#4691)
  • [docs] update comment about pre-installed Java version for SWIG build @StrikerRUS (#4710)
  • [docs] fix C API docs rendering @StrikerRUS (#4688)
  • [docs] Add avatar to Yu Shi in R docs @StrikerRUS (#4690)

🧰 Maintenance

  • release v3.3.1 @jameslamb (#4715)
  • [ci] introduce CI jobs that mimic CRAN gcc-ASAN and clang-ASAN tests (fixes #4674) @jameslamb (#4678)
  • [R-package][test] add reference to the original issue in R-package test @StrikerRUS (#4720)
  • [python] Improve error message for plot_metric with Booster @js850 (#4709)
  • [R-package] allow for small numerical differences in Booster test @jameslamb (#4714)
  • Fix some paramater hints when loading from binary file @hzy46 (#4701)
  • [ci] fix CI Windows script to use downloaded SWIG, not the pre-installed one @StrikerRUS (#4711)
  • [ci] Rename RTD config file @StrikerRUS (#4689)
  • [ci] Bump Google Test version from 1.10.0 to 1.11.0 @StrikerRUS (#4683)
  • [python] fix mypy error in engine.py @rakki-18 (#4675)
  • [python] fix mypy error in setup.py @rakki-18 (#4671)
  • update Guolin's e-mail in setup.py @StrikerRUS (#4663)
  • Replace deprecated licenseUrl field with license one in .nuspec file @StrikerRUS (#4669)
  • [python][sklearn] use __sklearn_is_fitted__() in all estimator fitness checks @StrikerRUS (#4654)
  • [ci] Bump version for development @StrikerRUS (#4662)

v3.3.0

2 years ago

Changes

💡 New Features

  • allow inclusion in C programs @drewmiller (#4608)
  • add param aliases from scikit-learn @StrikerRUS (#4637)
  • [python] add placeholders to titles in plotting functions @StrikerRUS (#4614)
  • [python-package] Support 2d collections as input for init_score in multiclass classification task @jmoralez (#4150)
  • [python] add parameter object_hook to method dump_model @xadupre (#4533)
  • [python] support Dataset.get_data for Sequence input. @cyfdecyf (#4472)
  • [python] allow to pass some params as pathlib.Path objects @StrikerRUS (#4440)
  • [python-package] Create Dataset from multiple data files @cyfdecyf (#4089)
  • [dask] add support for eval sets and custom eval functions @ffineis (#4101)
  • Add linear leaf models to json output (fixes #4186) @btrotta (#4329)
  • [dask] run Dask tests on aarch64 architecture @StrikerRUS (#3996)
  • [python] handle arbitrary length feature names in Python-package @StrikerRUS (#4293)
  • Precise text file parsing @cyfdecyf (#4081)
  • added aliases to params @StrikerRUS (#4205)
  • [swig] add wrapper for LGBM_DatasetGetFeatureNames @shuttie (#4103)

🔨 Breaking

  • [python] deprecate "auto" value of ylabel argument of plot_metric() function @StrikerRUS (#4624)
  • [python] rename print_evaluation() into log_evaluation() @StrikerRUS (#4604)
  • [RFC][python] deprecate advanced args of train() and cv() functions and sklearn wrapper @StrikerRUS (#4574)
  • [RFC][python] deprecate silent and standalone verbose args. Prefer global verbose param @StrikerRUS (#4577)
  • [python] add 'auto' value for importance_type param in plotting @StrikerRUS (#4570)
  • [dask] Make output of feature contribution predictions for sparse matrices match those from sklearn estimators (fixes #3881) @jameslamb (#4378)
  • [R-package] change default nrounds to 100 to match LightGBM core library default @david-cortes (#4197)

🚀 Efficiency Improvement

  • simplify and speed up comparisons for splits with identical gains @jameslamb (#4542)
  • factor out .size() checks in GetDataType() @jameslamb (#4541)
  • consolidate duplicate conditions in TextReader @jameslamb (#4530)
  • [python] replace numpy.zeros with numpy.empty for the speedup @StrikerRUS (#4410)
  • [R-package] avoid unnecessary computation of std deviations in lgb.cv() @jameslamb (#4360)
  • Replace division of exponential in Gamma loss @lorentzenchr (#4289)

🐛 Bug Fixes

  • [R-package] fix segfaults caused by missing Booster and Dataset handles (fixes #4208) @jameslamb (#4586)
  • move Network method implementations from network.h to network.cpp (fixes #4464) @jameslamb (#4496)
  • [R-package] prevent memory leak if pointer fails to allocate @david-cortes (#4613)
  • [R-package] Fix R memory leaks (fixes #4282, fixes #3462) @david-cortes (#4597)
  • [python][sklearn] respect eval_at aliases in keyword arguments @StrikerRUS (#4599)
  • [dask] Fixed Dask type annotation @StrikerRUS (#4558)
  • [R-package] allow construction of Dataset from CSV without header (fixes #4553) @jameslamb (#4554)
  • [R-package] fix OpenMP checking on macOS (fixes #4131) @jameslamb (#4507)
  • [R-package] pass R-configured compiler flags to checks in configure @jameslamb (#4506)
  • [R-package] use C++ compiler for pre-compile checks on Windows @jameslamb (#4504)
  • [dask] find all needed ports in each host at once (fixes #4458) @jmoralez (#4498)
  • Fix undefined behavior with NaN input in CategoricalDecision() @hcho3 (#4468)
  • [dask] determine output shape of array in predict (fixes #4285) @jmoralez (#4351)
  • [fix] fix Reservoir Sampling in Sample of random.h (fix #4371 and #4134) @shiyu1994 (#4450)
  • [CUDA] fix CUDA memory error by reducing block number (#4315) @RobinDong (#4327)
  • [R-package] fix protection stack imbalance and unprotected objects (fixes #4390) @fabsig (#4391)
  • [dask] pass additional predict() parameters through when input is a Dask Array @jameslamb (#4399)
  • fix param aliases @StrikerRUS (#4387)
  • sync for init score of binary objective function @loveclj (#4332)
  • Fix undefined behavior in ArrayArgs::Partition() when interval size is 1 (fixes #4272) @kruda (#4280)
  • Log warning instead of fatal when parsing float get under/overflow. @cyfdecyf (#4336)
  • [fix] fix Sample when sampling only one element (fix #4134) @shiyu1994 (#4324)
  • [R-package] move more finalizer logic into C++ side to address memory leaks @jameslamb (#4353)
  • [tests][python] fix f-string in test_dask.py @StrikerRUS (#4373)
  • [fix] skip empty bins when calculating cnt_in_bin in BinMapper::FindBin (fix #4301) @shiyu1994 (#4325)
  • [fix] fix GatherInfoForThresholdNumerical boundary (fix #4286) @shiyu1994 (#4322)
  • fix calculation of weighted gamma loss (fixes #4174) @mayer79 (#4283)
  • [R-package] prevent symbol lookup conflicts (fixes #4045) @jameslamb (#4155)
  • [R-package] avoid misleading warnings when using interaction constraints (fixes #4108) @jameslamb (#4232)
  • [fix] Fix bug in data distributed learning with local empty leaf @shiyu1994 (#4185)
  • fix: Dataset::CreateValid init fields which saves to binary. @cyfdecyf (#4177)

📖 Documentation

  • [docs] add Mars to docs @StrikerRUS (#4616)
  • [docs] update link to MinGW-w64 site @StrikerRUS (#4606)
  • [docs] add lightgbm_ray to docs @jameslamb (#4584)
  • [docs][python] Refer to functions as callable in docstrings @StrikerRUS (#4575)
  • [R-package] fix warnings in demos @jameslamb (#4569)
  • [R-package] fix warnings in examples @jameslamb (#4568)
  • [python][docs] Refer to string type as str in docstrings @StrikerRUS (#4565)
  • [docs] add José Morales to repo maintainers @StrikerRUS (#4563)
  • [docs] update links to SynapseML (former MMLSpark) @StrikerRUS (#4564)
  • [python][docs] Refer to string type as str and add commas in list of ... types @StrikerRUS (#4557)
  • [docs][python] Improve description of eval_result argument in record_evaluation() @StrikerRUS (#4559)
  • [doc] Add link to Neptune hyperparam tuning guide @Blaizzy (#4529)
  • [docs] Update link to daal4py in README @StrikerRUS (#4532)
  • [docs] Add notes in installation guide, including ones about OpenMP @StrikerRUS (#4520)
  • [docs] [R-package] use CRAN-style builds when building pkgdown site @jameslamb (#4513)
  • [docs] Update link to mlr3-compliant interface in README @StrikerRUS (#4509)
  • [docs] document CLI behavior when label_column is omitted @jameslamb (#4485)
  • [docs] clarify description of prediction early stopping @StrikerRUS (#4411)
  • [docs][python] add versionadded to Sequence class in Python wrapper @StrikerRUS (#4441)
  • [docs] add lleaves to README @StrikerRUS (#4431)
  • [docs] Add shapash to the list of related projects @StrikerRUS (#4408)
  • [docs] update link to LightGBM example in MMLSpark repo @StrikerRUS (#4401)
  • [docs][R-package] add authors in R-package description @StrikerRUS (#4395)
  • fix: typo in python class _InnerPredictor docstring @cyfdecyf (#4389)
  • [dask] Dask Vector types for group, init_score, sample_weights (fixes #4375) @ffineis (#4380)
  • [docs] document sanitizers @StrikerRUS (#4365)
  • [docs][python] enhance keep_training_booster param description @StrikerRUS (#4364)
  • [docs] add anchor for nightly builds in docs @StrikerRUS (#4366)
  • [docs] document how to pass multi-value params from Python and R (fixes #4345) @jameslamb (#4346)
  • [docs] make building of C++ tests section collapsable @StrikerRUS (#4340)
  • [docs] replace broken mmlspark notebook link in docs @jameslamb (#4303)
  • [docs] clarify docs for LGBM_BoosterGetEvalNames and LGBM_BoosterGetEvalCounts (fixes #4264) @jameslamb (#4270)
  • [docs][R-package] update docs on C++ interface @jameslamb (#4257)
  • [docs][python] update some docs related to custom objective @StrikerRUS (#4245)
  • [docs][python][scikit-learn] added note for LGBMRanker @StrikerRUS (#4243)
  • [docs] fix broken MS MPI link in Installation Guide @jameslamb (#4224)
  • [R-package] clarify parameter documentation (fixes #4193) @jameslamb (#4202)
  • [docs][R-package] Update the explanation of num_threads (fixes #4192) @issactoast (#4199)
  • [docs] add working dir to R package docker run examples @jameslamb (#4190)
  • [docs] fix markdown in docs @StrikerRUS (#4191)
  • [docs] Add changes to gcc-tips @akshitadixit (#4187)
  • [docs] bring back macOS installation method with Homebrew formula in docs @StrikerRUS (#4182)

🧰 Maintenance

  • v3.3.0 release (fixes #4310) @jameslamb (#4633)
  • fix possible precision loss in xentropy and fair loss objectives @jameslamb (#4651)
  • [tests][python-package] refactor list_to_1d_numpy test to run without pandas installed @jmoralez (#4639)
  • [python] add type hints to _safe_call @strobelTha (#4641)
  • remove unused DCGCalculator::CalDCGAtK() @jameslamb (#4650)
  • [python][sklearn] add __sklearn_is_fitted__() method to be better compatible with scikit-learn API @StrikerRUS (#4636)
  • [ci] Use the latest gcc version in macOS CI jobs @StrikerRUS (#4640)
  • remove duplicated debug printing in CMakeLists.txt for MPI @StrikerRUS (#4644)
  • remove unused BinMapper::SizeForSpecificBin() @jameslamb (#4643)
  • [ci] ignore certificates for kitware apt channel in CUDA jobs (fixes #4646) @jameslamb (#4648)
  • [ci] bump CUDA version from 11.4.0 to 11.4.2 at CI @StrikerRUS (#4628)
  • [R-package] introduce Dataset methods set_field() and get_field() @jameslamb (#4571)
  • [ci] Recover running CUDA tests at CI (fixed #4611) @shiyu1994 (#4621)
  • [ci] Run cmakelint at CI and fix some errors @StrikerRUS (#4617)
  • [python] initialize installation options with boolean values in setup.py @StrikerRUS (#4620)
  • [python] fix mypy error in dask.py @StrikerRUS (#4615)
  • [ci] Stop running CUDA tests at CI @StrikerRUS (#4611)
  • [R-package] avoid unnecessary computation and add tests for Dataset set_reference() method @jameslamb (#4587)
  • [ci] fix link to LightGBM public e-mail @StrikerRUS (#4603)
  • [tests][dask] Use workers hostname in tests (fixes #4594) @jmoralez (#4595)
  • prefer spaces to tabs in CMakeLists.txt @jameslamb (#4593)
  • [ci] skip Dask tests on QEMU builds @jameslamb (#4600)
  • [ci] simplify docker info parsing in QEMU builds @StrikerRUS (#4592)
  • [ci] explicitly set --platform when running aarch64 image in QEMU builds @jameslamb (#4579)
  • [R-package] fix inaccurate error message in Dataset get_colnames() method @jameslamb (#4588)
  • [R-package] preserve uses of '...' in Dataset slice() method @jameslamb (#4581)
  • [R-package] fix inaccurate comments, remove unnecessary comments @jameslamb (#4582)
  • [R-package] deprecate the use of 'info' in Dataset @jameslamb (#4573)
  • [R-package] deprecate uses of '...' in Dataset slice() method @jameslamb (#4572)
  • [R-package] use {testthat} SummaryReporter in tests @jameslamb (#4567)
  • [python] Use double type for init_score array when set by predictor @StrikerRUS (#4510)
  • [ci] upgrade R to 4.1.1 @jameslamb (#4560)
  • [python] add type hints on train() in engine.py @jameslamb (#4544)
  • [R-package] add deprecation warnings on uses of '...' in predict() and reset_parameter() @jameslamb (#4548)
  • [docs] Clarify the fact that predict() on a file does not support saved Datasets (fixes #4034) @jameslamb (#4545)
  • [ci] Check for MM_PREFETCH and MM_MALLOC not only in CRAN builds @StrikerRUS (#4540)
  • [ci] Add checks that OpenMP is used in R-package builds @StrikerRUS (#4538)
  • [ci] Add checks that MM_PREFETCH and MM_MALLOC are used in CRAN builds @StrikerRUS (#4536)
  • [python] add type hints to logging functions in basic.py @jameslamb (#4527)
  • [python] add type hints in docs/conf.py @jameslamb (#4526)
  • [R-package] remove unused '...' in Booster constructor @jameslamb (#4523)
  • [R-package] add deprecation warnings about some uses of '...' @jameslamb (#4522)
  • [ci] use flag '--allow-releaseinfo-change' in some 'apt-get update' calls @jameslamb (#4524)
  • [ci] replace uses of backticks in test.sh with $() @jameslamb (#4519)
  • [ci] move Solaris and valgrind test steps into scripts @jameslamb (#4503)
  • [tests][dask] reduce number of collisions tests @jmoralez (#4501)
  • [R-package] remove unused variable R_SCRIPT in configure.win @jameslamb (#4505)
  • Update c_api LGBM_SampleIndices() comment. @cyfdecyf (#4490)
  • [R-package] quote path variables in build-cran-package.sh @jameslamb (#4499)
  • [python][tests] refactor tests with Sequence input @StrikerRUS (#4495)
  • [R-package] limit exported symbols in DLL @jameslamb (#4494)
  • [docs][ci] bump versions of R-package dependencies at RTD @StrikerRUS (#4488)
  • remove examples/.gitignore @jameslamb (#4486)
  • [python] Add type hints to helpers/parameter_generator.py @sagnik1511 (#4474)
  • [refactor] Use CreateSampleIndices() in c_api.cpp @cyfdecyf (#4478)
  • [python] parallelize MinGW make similarly to Unix make command @StrikerRUS (#4462)
  • [ci] remove preinstalled possibly conflicting software from PATH in CI jobs @StrikerRUS (#4463)
  • [ci] Add CI job running rchk on the R package (fixes #4400) @jameslamb (#4449)
  • [python] migrate to pathlib in setup.py and use absolute() on paths first @StrikerRUS (#4444)
  • [ci] add support for 8.0 and 8.6 CUDA archs @StrikerRUS (#4454)
  • [tests][python] added tests for early stop in prediction in ranking task @StrikerRUS (#4457)
  • [ci] bump CUDA version from 11.2.2 to 11.4.0 at CI @StrikerRUS (#4453)
  • [tests] clarify RuntimeError in distributed tests @StrikerRUS (#4452)
  • [python-package] use toarray() instead of todense() in tests and examples @jameslamb (#4446)
  • [python] migrate to pathlib in distributed tests @StrikerRUS (#4443)
  • [python] minor refactoring of Python code @StrikerRUS (#4442)
  • [tests][python] refactor file loading routine in C API test @StrikerRUS (#4437)
  • [tests] fix deprecation numpy warning @StrikerRUS (#4439)
  • [python-package] convert string concatenation to f-strings in test_engine.py (fixes #4136) @jameslamb (#4436)
  • [python] migrate to pathlib in python examples @StrikerRUS (#4428)
  • [python] migrate to pathlib in helper scripts @StrikerRUS (#4434)
  • [tests][cli] distributed training @jmoralez (#4254)
  • [python] migrate to pathlib in python tests @StrikerRUS (#4435)
  • [python] migrate to f-strings in interactive_plot_example.ipynb @StrikerRUS (#4430)
  • [ci] ensure interactive_plot_example notebook is run in interactive mode at CI @StrikerRUS (#4432)
  • [ci] add h5 files into .gitignore @StrikerRUS (#4429)
  • [python] migrate to pathlib in conf.py @StrikerRUS (#4427)
  • [python-package] f-string format updated in plot_example.py @amanjha8100 (#4421)
  • [python] migrate to pathlib in create_nuget.py @StrikerRUS (#4422)
  • [python-package] Add type hints to init for LGBMModel @seanytak (#4420)
  • [SWIG] fix compiler warning about unused variable in SWIG @StrikerRUS (#4419)
  • [tests] fix compiler warning about types conversion in cpp tests @StrikerRUS (#4418)
  • [dask] fix typehint on _pad_eval_names() @jameslamb (#4413)
  • [python] Add type hints to python-package/lightgbm/plotting.py @WestonKing-Leatham (#4367)
  • [tests][dask] add missing compute() in Dask test @jameslamb (#4412)
  • [tests][ci] run cpp tests with sanitizers on Linux and macOS @StrikerRUS (#4330)
  • [ci] [R-package] increase timeout on valgrind job @jameslamb (#4404)
  • [python] Improving the syntax of the fstrings in the file: .\examples\python-guide\advanced_example.py @sayantan1410 (#4386)
  • [python] Improving the syntax of prints in simple_example.py and sklearn_example.py @StrikerRUS (#4396)
  • [R-package] remove unnecessary comments @jameslamb (#4383)
  • [ci] Increase timeout value for QEMU builds @StrikerRUS (#4385)
  • [R-package] consolidate duplicate lists of Dataset info keys @jameslamb (#4381)
  • [tests] replace pytest.parametrize @StrikerRUS (#4377)
  • [ci] [R-package] add unit tests on monotone constraints @jameslamb (#4352)
  • [python] add type hints to check_dynamic_dependencies.py @greyhere (#4382)
  • [python] add type hints to python-package/setup.py @greyhere (#4376)
  • [R-package] remove defaults in internal functions @jameslamb (#4361)
  • [python] improving the syntax of the fstring in the file : tests/python_package_test/test_dask.py @sayantan1410 (#4358)
  • Updated tests/python_package_test/test_plotting.py to use f-strings @WestonKing-Leatham (#4359)
  • [R-package] remove unnecessary library() calls in tests @jameslamb (#4354)
  • [python-package] use f-strings for concatenation in examples/python-guide/logistic_regression.py @sagnik1511 (#4356)
  • [python-package] updated test_consistency.py to use f-strings @sayantan1410 (#4348)
  • [R-package] resolve test warning about is.na() and handles @jameslamb (#4341)
  • [R-package] factor out lgb.check.r6.class() @jameslamb (#4343)
  • [R-package] remove lgb.last_error() and LGBM_GetLastError_R() @jameslamb (#4344)
  • [R-package] remove unused argument in early stopping callback @jameslamb (#4342)
  • [R-package] remove uses of ... in Predictor constructor @jameslamb (#4338)
  • [R-package] remove unused code in lgb.params2str() @jameslamb (#4337)
  • [ci] upgrade R to 4.1.0 in CI @StrikerRUS (#4328)
  • [ci] cmake: remove linking to sanitizer library @cyfdecyf (#4176)
  • [ci] Increase timeout value for QEMU builds @StrikerRUS (#4326)
  • [python] improving the syntax of the fstring in the file : tests/python_package_test/test_basic.py @sayantan1410 (#4312)
  • [docs][python] fix LGBMRanker docstring @StrikerRUS (#4306)
  • [python] improve error message for required packages @StrikerRUS (#4304)
  • [tests][python] Handle data types more accurate in C API test @StrikerRUS (#4297)
  • [python-package] Improve Graphviz import error message (fixes #4299) @AngelikaAntsmae (#4302)
  • [python] Handle integer types more accurate in Python-to-C interface @StrikerRUS (#4292)
  • [python] Improving the syntax of the f-strings in the file: tests/c_api_test/test.py @sayantan1410 (#4294)
  • [CUDA] Add CUDA_ARCHITECTURES to fix CMake warnings (#3754) @RobinDong (#4268)
  • [R-package] Handle integer types more accurate in R-to-C interface @StrikerRUS (#4291)
  • [R-package] suppress Wcast-function-type warning in CMake-based gcc and MinGW builds (fixes #4273) @jameslamb (#4274)
  • [python] added f-string to python-package/lightgbm/basic.py @NovusEdge (#4143)
  • [python] added f-strings to python-package/lightgbm/dask.py @NovusEdge (#4144)
  • [ci] pin dask and distributed in CI jobs @jameslamb (#4288)
  • Migrate to f-strings in python-package\lightgbm\plotting.py (#4136) @akshitadixit (#4279)
  • [python] added f-strings to helpers/parameter_generator.py @NovusEdge (#4146)
  • [python] added f-string to python-package/lightgbm/callback.py @NovusEdge (#4142)
  • [R-package] manage Dataset and Booster handles as R external pointers (fixes #3016) @jameslamb (#4265)
  • [ci][docs] Unpin Sphinx version @StrikerRUS (#4277)
  • [docs] remove extra spaces in comments and docs @jameslamb (#4269)
  • [R-package] move creation of character vectors in some methods to C++ side @jameslamb (#4256)
  • [ci][docs] Restrict Sphinx version @StrikerRUS (#4267)
  • [python] added f-strings to python-package/lightgbm/engine.py @kantajitshaw (#4258)
  • fix param name @StrikerRUS (#4253)
  • [R-package] Use R standard routines to access character data in C++ @jameslamb (#4252)
  • [ci] Delete lock.yml @StrikerRUS (#4251)
  • Correct spelling @az0 (#4250)
  • [R-package] Use R standard routines to access numeric and integer array data in C++ @jameslamb (#4247)
  • [R-package] use R standard routine to access read-only ints passed to C++ @jameslamb (#4246)
  • [R-package] move Rinternals.h closer to where it is used @jameslamb (#4248)
  • [R-package] Convert LGBM_GetLastError_R to use R built-in types @jameslamb (#4242)
  • [R-package] remove pre-allocated call_state in C++ calls @jameslamb (#4244)
  • [ci] Install graphviz system-widely @StrikerRUS (#4238)
  • show specific error message in TCP accept/send/receive logs @jameslamb (#4128)
  • [ci] [python-package] remove unused import in tests @jameslamb (#4233)
  • Fix typo in binary file already exists error message. @cyfdecyf (#4231)
  • [R-package] fix warnings in unit tests @jameslamb (#4225)
  • [python][scikit-learn] change MRO @StrikerRUS (#3192)
  • [ci][docs] Unpin Breathe version in requirements.txt @StrikerRUS (#4222)
  • [R-package] Move error handling into C++ side @jameslamb (#4163)
  • [R-package] fix grammar in comments @david-cortes (#4215)
  • [dask] Fix typo mentioned in 4101 @ffineis (#4214)
  • [ci] parallelize R package installs in CI jobs @jameslamb (#4198)
  • [python] Migrate to f-strings in python-package/lightgbm/sklearn.py @akshitadixit (#4188)
  • [R-package] Make returned feature importances from lgb.importance() visible by default @david-cortes (#4194)
  • [ci] run cpp tests at CI @StrikerRUS (#4166)
  • [ci] unpin CMake version for CUDA + Clang toolchain @StrikerRUS (#4183)
  • [ci] Restore CUDA jobs at CI @StrikerRUS (#4172)
  • [ci] Bump version for development @StrikerRUS (#4171)