v3.2.0
Changes
💡 New Features
- [SWIG] Add streaming data support + cpp tests @AlbertoEAF (#3997)
- [dask] Include support for init_score @jmoralez (#3950)
- [dask] [python-package] include support for column array as label @jmoralez (#3943)
- [dask] allow tight control over ports @jameslamb (#3994)
- Run tests and build Python wheels for aarch64 architecture @StrikerRUS (#3948)
- [dask] Add support for 'pred_leaf' in Dask estimators (fixes #3792) @jameslamb (#3919)
- [SWIG] add size_t manipulation functions @shuttie (#3895)
- Add new task type: "save_binary". @cyfdecyf (#3651)
- [CUDA] added support for Clang @StrikerRUS (#3886)
- [python] Start supporting Python 3.9 @StrikerRUS (#3693)
- [python] Allow to register custom logger in Python-package @StrikerRUS (#3820)
- [dask] Support pred_contrib in Dask predict() methods (fixes #3713) @jameslamb (#3774)
- [python-package] [dask] Add DaskLGBMRanker @ffineis (#3708)
- [R-package] Add GPU install options (fixes #3765) @jameslamb (#3779)
- [R-package] enable use of trees with linear models at leaves (fixes #3319) @jameslamb (#3699)
- support more filesystem as the storage for model file @htgeis (#3730)
- [R-package] add support for non-ASCII feature names (fixes #2983) @jameslamb (#3647)
- [R-package] allow access to params in Booster @jameslamb (#3662)
- Trees with linear models at leaves @btrotta (#3299)
- [python] [dask] add initial dask integration @SfinxCZ (#3515)
- [python] Windows wheels that support GPUs via OpenCL @itamarst (#3403)
🔨 Breaking
- [ci][SWIG] update SWIG version and use separate CI job to produce SWIG artifacts @StrikerRUS (#3727)
- [ci] indicate support of Big Sur and drop High Sierra @StrikerRUS (#3749)
- [python] Drop Python 2 support @StrikerRUS (#3581)
🚀 Efficiency Improvement
- [dask] use random ports in network setup @jmoralez (#3823)
- Optimize array-from-ctypes in basic.py @asford (#3927)
- Change Dataset::CopySubrow from group-wise to column-wise @shiyu1994 (#3720)
- [python-package] remove unused Eigen files, compile with EIGEN_MPL2_ONLY (fixes #3684) @jameslamb (#3685)
🐛 Bug Fixes
- Range check for DCG position discount lookup @ashok-ponnuswami-msft (#4069)
- Fix parsing of non-finite values @mjmckp (#3942)
- Set
is_linear_
to false when it is absent from the model file @shiyu1994 (#4056) - Fix evalution of linear trees with a single leaf. @mjmckp (#3987)
- Use high precision conversion from double to string in Tree::ToString() for new linear tree members @mjmckp (#3938)
- Fix for CreatePredictor function and VS2017 Debug build @mjmckp (#3937)
- Fix access violation exception that can occur during invocation of loop lambda function when inner_start >= inner_end in 'For' template. @mjmckp (#3936)
- [dask] remove extra 'client' kwarg in DaskLGBMRegressor @jameslamb (#3906)
- [CUDA] Support CUDA 9 and test different CUDA versions at CI @StrikerRUS (#3880)
- [dask] fix Dask docstrings and mimic sklearn wrapper importing way @StrikerRUS (#3855)
- [python-package] respect parameter aliases for network params @jameslamb (#3813)
- Create a new TcpSocket when connection failed @wjsi (#3840)
- [dask] Drop aliases of core network parameters @StrikerRUS (#3843)
- Don't copy more than has been allocated to device_features. @ChipKerchner (#3752)
- Fix thread-safety in C API's PredictSingleRow @AlbertoEAF (#3771)
- [dask] allow parameter aliases for local_listen_port, num_threads, tree_learner (fixes #3671) @jameslamb (#3789)
- [dask] [python-package] Search for available ports when setting up network (fixes #3753) @jameslamb (#3766)
- Update CUDA treelearner according to changes introduced for linear trees @StrikerRUS (#3750)
- Ensure CUDA vector length is consistent with AlignedSize @ChipKerchner (#3748)
- Initialize any_nan_ property of LinearTreeLearner @btrotta (#3709)
- Fix bug in corner case with histogram bin mismatch @shiyu1994 (#3694)
- move CheckParamConflict() after LogLevel processing @h-vetinari (#3742)
- Fix bug in ExtractFeaturesFromMemory when predidct_fun_ is used @shiyu1994 (#3721)
- Fix compiler warnings caused by implicit type conversion (fixes #3677) @btrotta (#3729)
- fix test_monotone_constraints often fails on MPI builds @CharlesAuguste (#3683)
- [R-package] remove broken default for
file
in readRDS / saveRDS functions @jameslamb (#3664) - Added static cast from double to float @sisco0 (#3678)
- [docs] fix R documentation builds (fixes #3655) @jameslamb (#3656)
- [python] add average precision into higher_better eval @penolove (#3649)
- Fix model locale issue and improve model R/W performance. @AlbertoEAF (#3405)
📖 Documentation
- [docs] add Yu Shi to repo maintainers @StrikerRUS (#4060)
- [dask] add tutorial documentation (fixes #3814, fixes #3838) @jameslamb (#4030)
- [docs] Add alt text on images in index.rst @marcelonieva7 (#4029)
- [docs] update description of deterministic parameter @shiyu1994 (#4027)
- [docs] Add alt text to image in Parameters-Tuning.rst @subhamagrawal7 (#4035)
- [docs] Add FLAML for efficient hyperparameter optimization @qingyun-wu (#4013)
- [DOCS] Update docs to note that pred_contrib is not available for linear trees @btrotta (#4006)
- [doc] Reorganize documentation on distributed learning (fixes #3596) @jameslamb (#3951)
- [docs] Change some 'parallel learning' references to 'distributed learning' @jameslamb (#4000)
- [docs] fix typos in network docs @jameslamb (#3960)
- [docs] add reference to Rust binding @StrikerRUS (#3954)
- [R-package] fix duplicated return values in docs @philip-khor (#3955)
- [DOCS] Update docs about linear tree and monotone constraints @btrotta (#3945)
- [docs][dask] add versionadded note to Dask docs @jameslamb (#3935)
- [docs][python] fix shape description of returned result for predict_proba @StrikerRUS (#3933)
- [dask] [docs] Fix inaccuracies in API docs for Dask module (fixes #3871) @jameslamb (#3930)
- [docs] fix typo: one-hot coding should be one-hot encoding @gauravchopracg (#3898)
- [docs] simplify bug report template @jameslamb (#3921)
- [docs][dask] Add type of client_ property to docs @StrikerRUS (#3902)
- [docs] make link checks badge clickable @StrikerRUS (#3901)
- [CUDA][docs] explicitly require CUDA 9.0 or higher @StrikerRUS (#3885)
- [docs] improve wordings and code style @StrikerRUS (#3887)
- [docs] document CUDA version support @StrikerRUS (#3428)
- [dask] Add type hints in Dask package @jameslamb (#3866)
- [docs] fix docs for machine_list_filename param @StrikerRUS (#3863)
- [R-package][docs] improve grouping in R API reference @StrikerRUS (#3854)
- [R-package] Remove duplicated return values from docs @philip-khor (#3850)
- [dask] warn if attempting to use tree_learner other than data parallel @jameslamb (#3848)
- [dask][docs] initial setup for Dask docs @StrikerRUS (#3822)
- [docs] bump min sphinx_rtd_theme version @StrikerRUS (#3803)
- [docs] remove unused argument in docs config @StrikerRUS (#3801)
- [docs] fix min CMake version in docs for macOS @StrikerRUS (#3799)
- [docs] expand documentation on 'group' for ranking task @jameslamb (#3772)
- [docs][python] add conda-forge install instructions @raybellwaves (#3544)
- [docs][R-package] change obsolete wordings in R README @StrikerRUS (#3728)
- [docs] [R-package] improve R-package docs on testing @jameslamb (#3724)
- [docs] Remove Gitter and Slack (fixes #3689) @jameslamb (#3710)
- [docs] add doc on min_data_in_leaf approximation (fixes #3634) @jameslamb (#3690)
- [docs] add link to optuna examples @StrikerRUS (#3680)
- [docs] fix MLflow spelling @StrikerRUS (#3668)
- add 'mlr3learners.lightgbm' to README @t-wojciech (#3666)
- [docs] add link to ML Flow and treesnip in LightGBM docs @jameslamb (#3663)
- [docs] Add details on improving training speed @jameslamb (#3628)
- [docs] added daal4py to related projects @StrikerRUS (#3638)
- [docs] add Kubeflow operator repo and link to example @StrikerRUS (#3632)
🧰 Maintenance
- v3.2.0 release @guolinke (#3872)
- store all CMake files in one place @StrikerRUS (#4087)
- [ci] upgrade R CI scripts to work on Ubuntu 20.04 @jameslamb (#4084)
- [dask] remove unused imports from typing @jameslamb (#4079)
- [ci] install Dask from main conda channel @StrikerRUS (#4076)
- [tests][dask] simplify code in Dask tests @StrikerRUS (#4075)
- [dask] [ci] fix flaky network-setup test @jameslamb (#4071)
- [python-package] Some mypy fixes @AlbertoEAF (#3916)
- [python-package] add type hints on Booster.set_network() @jameslamb (#4068)
- [ci] run Dask examples on CI @StrikerRUS (#4064)
- [python-package] Add type hint to the libpath file @deddyjobson (#4070)
- Add CMake option to enable sanitizers and build gtest @hcho3 (#3555)
- [ci] set 'pending' commit status for running R Solaris optional workflow @StrikerRUS (#4061)
- [dask] raise more informative error for duplicates in 'machines' (fixes #4057) @jameslamb (#4059)
- [dask] include multiclass-classification task in tests @jmoralez (#4048)
- [ci] add CMake + R 3.6 test back (fixes #3469) @jameslamb (#4053)
- [ci] fix R CMD CHECK note about example timings (fixes #4049) @jameslamb (#4055)
- [ci] prevent getting incompatible dask and distributed versions @jameslamb (#4054)
- [ci] ignore untitle Jupyter notebooks in .gitignore @jameslamb (#4047)
- [ci] [R-package] upgrade to R 4.0.4 in CI @jameslamb (#4042)
- [dask] [ci] add support for scikit-learn 0.24+ in tests (fixes #4031) @jameslamb (#4032)
- [tests][dask] simplify fit calls in Dask tests @StrikerRUS (#4018)
- [tests][python] Add test for single leaf in linear tree @StrikerRUS (#4015)
- [dask] Reuse addresses saved in variable @StrikerRUS (#4016)
- [ci] prefer older binary to new source for R packages on Mac builds (fixes #4008) @jameslamb (#4010)
- [dask] use more specific method names on _DaskLGBMModel @jameslamb (#4004)
- remove commented-out code in cross-entropy metric source @jameslamb (#3999)
- [tests][dask] add scikit-learn compatibility tests (fixes #3894) @imjwang (#3947)
- [tests][dask] make find-open-port test more reliable @jameslamb (#3993)
- [ci][python] hotfix imports order @StrikerRUS (#3992)
- [ci][python] run isort in CI linting job @StrikerRUS (#3990)
- [ci][python] apply isort to python-package/lightgbm/compat.py #3958 @zyxue (#3968)
- [ci][python] apply isort to python-package/lightgbm/engine.py #3958 @zyxue (#3970)
- [ci][python] apply isort to tests/python_package_test/test_engine.py #3958 @zyxue (#3981)
- [ci][python] apply isort to python-package/lightgbm/basic.py #3958 @zyxue (#3967)
- [ci][python] apply isort to python-package/lightgbm/init.py #3958 @zyxue (#3966)
- [ci][python] apply isort to python-package/lightgbm/sklearn.py #3958 @zyxue (#3973)
- [ci][python] apply isort to tests/python_package_test/test_basic.py #3958 @zyxue (#3977)
- [ci][python] apply isort to tests/python_package_test/test_consistency.py #3958 @zyxue (#3978)
- [ci][python] apply isort to tests/python_package_test/test_plotting.py #3958 @zyxue (#3982)
- [ci][python] apply isort to tests/python_package_test/test_utilities.py #3958 @zyxue (#3984)
- [ci][python] apply isort to python-package/setup.py #3958 @zyxue (#3974)
- [ci][python] apply isort to python-package/lightgbm/plotting.py #3958 @zyxue (#3972)
- [ci][python] apply isort to tests/cpp_test/test.py #3958 @zyxue (#3976)
- [ci][python] apply isort to tests/c_api_test/test_.py #3958 @zyxue (#3975)
- [ci][python] apply isort to tests/python_package_test/test_dual.py #3958 @zyxue (#3980)
- [ci][python] apply isort to python-package/lightgbm/libpath.py #3958 @zyxue (#3971)
- [dask] reuse len(parts) as n_parts @ffineis (#3985)
- [ci][python] apply isort to tests/python_package_test/test_dask.py #3958 @zyxue (#3979)
- [ci][python] apply isort to examples/python-guide/sklearn_example.py #3958 @zyxue (#3965)
- [ci][python] apply isort to python-package/lightgbm/dask.py #3958 @zyxue (#3969)
- [python-package] fix some warnings from mypy @tara-jawahar (#3891)
- [ci][python] apply isort to examples/python-guide/simple_example.py #3958 @zyxue (#3964)
- [ci][python] apply isort to examples/python-guide/plot_example.py #3958 @zyxue (#3963)
- [ci][python] apply isort to examples/python-guide/logistic_regression.py #3958 @zyxue (#3962)
- [ci][python] apply isort to examples/python-guide/advanced_example.py #3958 @zyxue (#3961)
- [ci][python] apply isort to docs/conf.py (#3958) @zyxue (#3959)
- openmp_wrapper.h stubs signature use __GOMP_NOTHROW @bsergean (#3923)
- [dask] test that Dask automatically treats 'category' columns as categorical features @jameslamb (#3932)
- fix compilation warnings in CUDA treelearner @StrikerRUS (#3889)
- [ci] prefer curl to wget @StrikerRUS (#3928)
- [dask] test training when a worker has no data @jmoralez (#3897)
- [ci] remove unused variable from PATH @StrikerRUS (#3926)
- [docs] fix typo in ChatOps command @StrikerRUS (#3922)
- [ci] encode token in the same way as e-mail address for RHub @StrikerRUS (#3920)
- [dask] Add unit tests that signatures are the same between Dask and scikit-learn estimators @GOusignu (#3911)
- [ci] update e-mail and token for R Hub builds @StrikerRUS (#3917)
- [ci][R-package] run R CRAN checks on Solaris by optional workflow @StrikerRUS (#3913)
- [dask] Support Dask dataframes with 'category' columns (fixes #3861) @jameslamb (#3908)
- fix typos in log messages @jameslamb (#3914)
- [dask] remove unused private _client attribute @StrikerRUS (#3904)
- [ci] Rename linkchecker job @StrikerRUS (#3903)
- [dask] remove 'client' kwarg from fit() and predict() (fixes #3808) @jameslamb (#3883)
- [ci] install Linkchecker only for check-links job @StrikerRUS (#3893)
- [ci] move link checking to a cron job @jameslamb (#3890)
- [dask] [python] client.rebalance on dask ranker test @ffineis (#3892)
- [ci] added compiler in CUDA job name @StrikerRUS (#3888)
- [docs][ci] drop special dependency requirements for RTD site @StrikerRUS (#3884)
- [dask][tests] increase client close timeout for Dask tests @StrikerRUS (#3879)
- [dask] fix teardown issues in Dask tests (fixes #3829) @jameslamb (#3869)
- [ci][R-package] remove CI workaround with manual withr installation @StrikerRUS (#3878)
- [ci] fall back to source installs of R packages if binary missing (fixes #3875) @jameslamb (#3876)
- [ci] ignore CUDA-related strings in Python logger test @StrikerRUS (#3874)
- [ci] fix R linting job (fixes #3873) @jameslamb (#3877)
- [ci] improve and run CUDA jobs for every commit and PR @StrikerRUS (#3825)
- [ci] add mypy to linting task @jameslamb (#3868)
- [dask] add tests on warnings, fix incorrect variable in log @jameslamb (#3865)
- [python] simplify param aliases handling @StrikerRUS (#3864)
- [python] use better names for imported classes from extra libraries @StrikerRUS (#3862)
- [python][tests] minor Python tests cleanup @StrikerRUS (#3860)
- [dask] rename _LGBMModel to _DaskLGBMModel @jameslamb (#3859)
- [ci] run artifacts packaging job on Ubuntu @StrikerRUS (#3757)
- [python-package] migrate test_sklearn.py to pytest @thomasjpfan (#3844)
- [dask] [python] Store co-local data parts as dicts instead of lists @ffineis (#3853)
- [dask] merge local_predict tests into other tests (fixes #3833) @ShrillShrestha (#3842)
- [dask] factor dask-ml out of tests (fixes #3796) @jameslamb (#3849)
- [dask][tests] skip Dask tests when Dask is not installed and improve imports in Dask tests @StrikerRUS (#3852)
- [dask][tests] reduce code duplication in Dask tests @StrikerRUS (#3828)
- [ci] improve optional checks @StrikerRUS (#3826)
- [dask][tests] move make_ranking into utils @StrikerRUS (#3827)
- [ci] make sure we use documented Xcode version for producing artifacts @StrikerRUS (#3824)
- [python][tests] transfer test_save_and_load_linear to test_engine @StrikerRUS (#3821)
- [python-package] migrate test_plotting.py to pytest @thomasjpfan (#3811)
- [dask] Address flaky test_ranker tests @ffineis (#3819)
- [dask] [python-package] use keyword args for internal function calls @jameslamb (#3755)
- [python][tests] use default tolerance for dual GPU+CPU test @StrikerRUS (#3810)
- Move compute and eigen libraries to external_libs folder @StrikerRUS (#3809)
- [python][tests] migrate test_engine.py to pytest @thomasjpfan (#3800)
- [python][tests] remove unused import @StrikerRUS (#3806)
- remove unused code @StrikerRUS (#3802)
- [python-package] migrate test_consistency.py to pytest @thomasjpfan (#3798)
- [dask] fix Dask import order @jameslamb (#3788)
- [docs] fix current RTD failures @StrikerRUS (#3787)
- [dask] reduce test times @jameslamb (#3786)
- [ci][docs] set limit for max requests per second to one host in linkchecker @StrikerRUS (#3785)
- Minor C API cleanup in predictor & SingleRowPredictor @AlbertoEAF (#3777)
- [ci] revert forcing CMake to try compile static library for R-package @StrikerRUS (#3784)
- [R-package][tests] remove unused lines in tests for the speedup @StrikerRUS (#3783)
- [ci][docs] update linkchecker @StrikerRUS (#3773)
- [tests][python] completely remove tempfile from test_basic @StrikerRUS (#3767)
- [python][tests] Migrates test_basic.py to use pytest @thomasjpfan (#3764)
- [ci] Slightly optimize optional workflows checks @StrikerRUS (#3762)
- [ci] improve experience with optional GitHub workflows @StrikerRUS (#3740)
- [ci] remove Travis (fixes #3519) @jameslamb (#3672)
- [ci] move Python Mac jobs from Travis to GitHub Actions @jameslamb (#3745)
- [ci] run Azure linux tasks on self-hosted runner pool @jameslamb (#3737)
- [ci][docs] replace file extensions in docs during Sphinx build @StrikerRUS (#3738)
- [ci] Move check-docs and lint jobs off Travis @jameslamb (#3726)
- [R-package] Add explicit return statement to R functions. @zenggyu (#3703)
- [ci] remove maxParallel limits on Azure DevOps @jameslamb (#3725)
- [ci] remove flaky MinGW job for R @StrikerRUS (#3723)
- [python][tests] small Python tests cleanup @StrikerRUS (#3715)
- [python][ci] remove line in MANIFEST for nonexistent file @StrikerRUS (#3711)
- [R-package] remove unused R_AS_INT64 @jameslamb (#3686)
- [R-package] fix incorrect passing builds in valgrind checks (fixes #3704) @jameslamb (#3705)
- [ci] fix deprecated 'brew cask install' call @jameslamb (#3692)
- small code and docs refactoring @StrikerRUS (#3681)
- [ci] remove unused CI checks, other small simplifications @jameslamb (#3688)
- [ci] speed up files downloading for Windows CI @StrikerRUS (#3682)
- [docs][ci] added docs about GPU support out of the box for Windows wheels and small refactoring for dual test @StrikerRUS (#3660)
- [docs] fix RTD builds @StrikerRUS (#3644)
- [python-package] remove unnecessary files to reduce sdist size @jameslamb (#3639)
- clarify warning about small target values with MAPE (fixes #3608) @jameslamb (#3615)
- [ci] Bump version for development @StrikerRUS (#3633)