* Fixes a bug that prevented using multiple eval_metrics in LGBMClassifier
* Move bug-fix test to the test_metrics unit-test
* Fix test to avoid issues with existing tests
* Fix coding-style error
Co-authored-by: German I Ramirez-Espinoza <gire@home>
* adding sparse support to TreeSHAP in lightgbm
* updating based on comments
* updated based on comments, used fromiter instead of frombuffer
* updated based on comments
* fixed limits import order
* fix sparse feature contribs to work with more than int32 max rows
* really fixed int64 max error and build warnings
* added sparse test with >int32 max rows
* fixed python side reshape check on sparse data
* updated based on latest comments
* fixed comments
* added CSC INT32_MAX validation to test, fixed comments
* modify attribute and include stacking tests
* backwards compatibility
* check sklearn version
* move stacking import
* Number of input features (#3173)
* Number of input features (#3173)
* Number of input features (#3173)
* Number of input features (#3173)
Split number of features and stacking tests.
* Number of input features (#3173)
Modify test name.
* Number of input features (#3173)
Update stacking tests for review comments.
* Number of input features (#3173)
* Number of input features (#3173)
* Number of input features (#3173)
* Number of input features (#3173)
Modify classifier test.
* Number of input features (#3173)
* Number of input features (#3173)
Check score.
* Add interaction constraints functionality.
* Minor fixes.
* Minor fixes.
* Change lambda to function.
* Fix gpu bug, remove extra blank lines.
* Fix gpu bug.
* Fix style issues.
* Try to fix segfault on MACOS.
* Fix bug.
* Fix bug.
* Fix bugs.
* Change parameter format for R.
* Fix R style issues.
* Change string formatting code.
* Change docs to say R package not supported.
* Remove R functionality, moving to separate PR.
* Keep track of branch features in tree object.
* Only track branch features when feature interactions are enabled.
* Fix lint error.
* Update docs and simplify tests.
* Support UTF-8 characters in feature name again
This commit reverts 0d59859c67.
Also see:
- https://github.com/microsoft/LightGBM/issues/2226
- https://github.com/microsoft/LightGBM/issues/2478
- https://github.com/microsoft/LightGBM/pull/2229
I reproduced the issue and as @kidotaka gave us a great survey in #2226,
I don't conclude that the cause is UTF-8, but "an empty string (character)".
Therefore, I revert "throw error when meet non ascii (#2229)" whose commit hash
is 0d59859c67, and add support feture names as UTF-8 again.
* add tests
* fix check-docs tests
* update
* fix tests
* update .travis.yml
* fix tests
* update test_r_package.sh
* update test_r_package.sh
* update test_r_package.sh
* add a test for R-package
* update test_r_package.sh
* update test_r_package.sh
* update test_r_package.sh
* fix test for R-package
* update test_r_package.sh
* update test_r_package.sh
* update test_r_package.sh
* update test_r_package.sh
* update
* updte
* update
* remove unneeded comments
* Revert "specify the last supported version of scikit-learn (#2637)"
This reverts commit d100277649.
* ban scikit-learn 0.22.0 and skip broken test
* fix updated test
* fix lint test
* Revert "fix lint test"
This reverts commit 8b4db0805f.
* [swig] Fix SWIG methods that return char** with StringArray.
+ [new] Add StringArray class to manage and manipulate arrays of fixed-length strings:
This class is now used to wrap any char** parameters, manage memory and
manipulate the strings.
Such class is defined at swig/StringArray.hpp and wrapped in StringArray.i.
+ [API+fix] Wrap LGBM_BoosterGetFeatureNames it resulted in segfault before:
Added wrapper LGBM_BoosterGetFeatureNamesSWIG(BoosterHandle) that
only receives the booster handle and figures how much memory to allocate
for strings and returns a StringArray which can be easily converted to String[].
+ [API+safety] For consistency, LGBM_BoosterGetEvalNamesSWIG was wrapped as well:
* Refactor to detect any kind of errors and removed all the parameters
besides the BoosterHandle (much simpler API to use in Java).
* No assumptions are made about the required string space necessary (128 before).
* The amount of required string memory is computed internally
+ [safety] No possibility of undefined behaviour
The two methods wrapped above now compute the necessary string storage space
prior to allocation, as the low-level C API calls would crash the process
irreversibly if they write more memory than which is passed to them.
* Changes to C API and wrappers support char**
To support the latest SWIG changes that enable proper char**
return support that is safe, the C API was changed.
The respecive wrappers in R and Python were changed too.
* Cleanup indentation in new lightgbm_R.cpp code
* Adress review code-style comments.
* Update swig/StringArray.hpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update python-package/lightgbm/basic.py
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update src/lightgbm_R.cpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
Co-authored-by: alberto.ferreira <alberto.ferreira@feedzai.com>
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* Add handling of RandomState object, which is standard for sklearn methods.
LightGBM expects an integer seed instead of an object.
If passed object is RandomState, we choose random integer based on its state to seed the underlying low level code.
While chosen random integer is only in the range between 1 and 1e10 I expect it to have enough entropy (?) to not matter in practice.
* Add RandomState object to random_state docstring.
* remove blank line
* Use property to handle setting random_state.
This enables setting cloned estimators with the set_params method in sklearn.
* Add docstring to attribute.
* Fix and simplify docstring.
* Add test case.
* Use maximal int for datatype in seed derivation.
* Replace random_state property with interfacing in fit method.
Derives int seed for C code only when fitting and keeps RandomState object as param.
* Adapt unit test to property change.
* Extended test case and docstring
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Add more equality checks (feature importance, best iteration/score).
* Add equality comparison of boosters represented by strings.
Remove useless best_iteration_ comparison (we do not use early_stopping).
* fix whitespace
* Test if two subsequent fits produce different models
* Apply suggestions from code review
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* fix the bug when use different params with reference
* fix
* Update basic.py
* Apply suggestions from code review
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update basic.py
* add test
* Apply suggestions from code review
* added asserts in test
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
Co-authored-by: StrikerRUS <nekit94-12@hotmail.com>
* save all param values into model file
* revert storing predict params
* do not save params for predict and convert tasks
* fixed test: 10 is found successfully for default 100
* specify more params as no-save
* Add capability to get possible max and min values for a model
* Change implementation to have return value in tree.cpp, change naming to upper and lower bound, move implementation to gdbt.cpp
* Update include/LightGBM/c_api.h
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Change iteration to avoid potential overflow, add bindings to R and Python and a basic test
* Adjust test values
* Consider const correctness and multithreading protection
* Update test values
* Update test values
* Add test to check that model is exactly the same in all platforms
* Try to parse the model to get the expected values
* Try to parse the model to get the expected values
* Fix implementation, num_leaves can be lower than the leaf_value_ size
* Do not check for num_leaves to be smaller than actual size and get back to test with hardcoded value
* Change test order
* Add gpu_use_dp option in test
* Remove helper test method
* Update src/c_api.cpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update src/io/tree.cpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update src/io/tree.cpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update tests/python_package_test/test_basic.py
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Remoove imports
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* reset
* fix a bug
* fix test
* Update c_api.h
* support to no filter features by min_data
* add warning in reset config
* refine warnings for override dataset's parameter
* some cleans
* clean code
* clean code
* refine C API function doxygen comments
* refined new param description
* refined doxygen comments for R API function
* removed stuff related to int8
* break long line in warning message
* removed tests which results cannot be validated anymore
* added test for warnings about unchangeable params
* write parameter from dataset to booster
* consider free_raw_data.
* fix params
* fix bug
* implementing R
* fix typo
* filter params in R
* fix R
* not min_data
* refined tests
* fixed linting
* refine
* pilint
* add docstring
* fix docstring
* R lint
* updated description for C API function
* use param aliases in Python
* fixed typo
* fixed typo
* added more params to test
* removed debug print
* fix dataset construct place
* fix merge bug
* Update feature_histogram.hpp
* add is_sparse back
* remove unused parameters
* fix lint
* add data random seed
* update
* [R-package] centrallized Dataset parameter aliases and added tests on Dataset parameter updating (#2767)
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
Co-authored-by: James Lamb <jaylamb20@gmail.com>
* trees_to_df method and unit test added. PEP 8 fixes for integration.
* Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
Post-review changes
* changes from second round of reviews from striker
* third round of review. formatting and added 2 more tests
* replaced pandas dot attribute accessor with string attribute accessor
* dealt with single tree edge case and minor refactor of tests
* slight refactor for checking if tree is a single node
* allow python sklearn interface's fit() to pass init_model to train()
* Fix whitespace issues, and change ordering of parameters to be backward
compatible
* Formatting fixes
* allow python sklearn interface's fit() to pass init_model to train()
* Fix whitespace issues, and change ordering of parameters to be backward
compatible
* Formatting fixes
* Recognize LGBModel objects for init_model
* simplified condition
* updated docstring
* added test
* dpi option in plot_importance
* pep fix
* added dpi to plot_metric, plot_tree
* add dpi to plot_split_value_histogram
* removed trailing white space in docstring
* avoid copy where possible
* use precise type for importance type
* removed pointless code
* simplify sparse pandas Series conversion
* more memory savings
* always force type conversion for 1-D arrays
* one more copy=False