Co-authored-by: Thomas J. Fan <thomasjpfan@gmail.com>
Co-authored-by: Olivier Grisel <olivier.grisel@ensta.org>
Co-authored-by: Thomas J. Fan <thomasjpfan@gmail.com>
* normalize_components in sparsePCA
* changed default strategy of Dummy to prior and removed outputs_2d ttribute
* removed usage of None to drop estimator in ensemble and behaviour param of IsolationForest
* remove support for drop=None in Voting
* removed some warning decorators
* remove feature_extraction.extract_patches
* removed VectorizerMixin and copy parameter from TFIDFVectorizer
* kernel.set_params now raises attributeerror
* removed fig from plot_partial_dependence
* removed iid parameter of search estimators
* removed brier_scorer
* raise error in split when shuffle is False and random_state is not None
* removed MultiOutputEstimator
* removed base classes of NaiveBayes
* removed drop from pipeline
* removed utils in random_projection
* removed presort and classes_ in trees
* flake8
* fixed some tests
* flake
* fixed docstring
* fixed other one
* some left
* mmmm
* Use astype(.., copy=False) when possible
* Use Use astype(.., copy=False) also in tests
* Fix CI
* Guillaume's comments
* Address review comments
* Add what's new
* Fix CI
* Lint
* Fix merge issues
* More merge conflict fixes
* Fix failing test
* Lint
* Use copy=True in cluster/hierarchical
* More fixes
* Change default solver in LogisticRegression
* This is an API change, not a feature
* Decrease numerical precision in LogisticRegression doctest
* ENH add multi_class='auto' for LR, default from 0.22
* No warning when binary
* FIX enforce deterministic behaviour in BaseBagging
* DOC add entry in whats new for model changes
* add comments
* revert space
* revert space right place
* Typo
* FIX change estimators_samples_
* TST check size training set and hash during bootstrapping
* DOC/TST API entry in doc and style correction
* DOC move entry in the right section
* DOC add missing author and issue
* DOC add details in whats new entry
* FIX add hash from joblib in utils
* iter
* add FutureWarning for methods with defaults=3
* add explicit cv values to fix assertion errors
* add tests for catching the FutureWarning
* Write current deprecation version
* Add deprecation in docstring
* change default cv value to None
* change cv from 3 to 5 in the examples
* upgrade doctests
* update doctest in tutorial
* update doctest in cross-validation doc
* fix tests
* add entry to whats new
* address Gael comments
* address Gael comments 2
* fix wrong indentation
* update doc
* add docstring deprecation warning in CV subclasses
* address Andy's comments
* fix PR number
* fix flake8
* add filterwarnings in tests
* fix doctests
* cv=None mendatory in Ridge
* fix warning related errors
* skip some doctests warnings
* make travis happy
* change from deprecated to versionchanged
* fix doctests and remove skipping
* address comments
* fixed OOB_Score bug for bagging slassifiers.
See: https://github.com/scikit-learn/scikit-learn/issues/8933
* Added white space
* more white space fixing
* Adding test for oob_score validity
* removing pandas, replacing with numpy matrices
* fixing white space
* more white space fixing
* white space ...
* fixed labels to allow for strings
* white space
* simplifying test
* white space
* reformatting test
* white space
* pressed enter at end of file
* removing line at end of file
* FIX adaboost estimators not randomising correctly
(fixes#7408)
FIX ensure nested random_state is set in ensembles
* DOC add what's new
* Only affect *__random_state, not *_random_state for now
* TST More informative assertions for ensemble tests
* More specific testing of different random_states
* Remove heavy memory footprint for OOB scoring from bagging.
- Remove `estimators_samples` attribute from `BaseBagging`
- Add method `_get_estimators_samples` to `BaseBagging` that
returns a generator producing sample indices on demand.
- Slight refactor of `_parallel_build_estimators()` to
isolate and group lines accessing random state.
* Replaced `BaseBagging.estimators_samples_` attribute with property.
- Accessing `BaseBagging.estimators_samples_` now triggers call to
`BaseBagging._get_estimators_samples` as well as deprecation
warning for release 0.20.
- This should make the fix for the OOB memory issue fully backwards
compatible.
* Remove print statement.
* Added test, made new method more general.
- Added test to `test_bagging.py` to ensure that indices generated
on the fly are identical to indices generated at fit time.
- Refactored `_get_estimators_samples()` to `_get_estimators_indices()`,
now both feature and samples indices are returned.
- Refactored `estimators_samples_()` to deal with above.
* Rename index generating functions and arguments.
* `estimators_samples_()` returns list instead of generator
* Removed `estimators_samples_` deprection warning.
* Actually removed `estimators_samples_` deprecation warning.
* New mask generation function, new bagging test, new BaseBagging attributes.
- Added new private function in bagging.py that converts indices to
a boolean mask.
- Added new bagging test to make sure identical OOB scores are generated
when the same estimator if fit with fixed random state and identical
training data.
- Added new private attributes `BaseBagging._max_features` and
`BaseBagging._max_samples` to store validated input values.
* Streamlined code, improved `estimators_samples_()` documentation.
- Removed `max_samples` argument from `_parallel_build_estimators()`,
this value is now accessed via `ensemble._max_samples`.
- Removed validation of `ensemble.max_features` and `max_samples`,
instead use `ensemble._max_features` and `ensemble._max_samples`
which are assumed to be already validated.
- Removed unnecessary `samples` variable from `_parallel_build_estimators()`.
- Changed the way `random_state` is generated in `_parallel_build_estimators()`
and `BaseBagging._get_estimators_data_draws()` to direct numpy method to
reflect that seeds created in `BaseBagging._fit()` are trustworthy.
- Due to above removed generation of new seed for each estimator in
`_parallel_build_estimators()` and `BaseBagging._get_estimators_data_draws()`.
- Added documentation to `BaseBagging.estimators_samples_()` property
indicating the reason it's generated dynamically and the associated performance
penalty.
- Returned `BaggingClassifier._set_oob_score()` and `BaggingRegressor._set_oob_score()`
to directly accessing `self.estimators_samples_`.
* Streamlined code, improved `estimators_samples_()` documentation.
- Removed `max_samples` argument from `_parallel_build_estimators()`,
this value is now accessed via `ensemble._max_samples`.
- Removed validation of `ensemble.max_features` and `max_samples`,
instead use `ensemble._max_features` and `ensemble._max_samples`
which are assumed to be already validated.
- Removed unnecessary `samples` variable from `_parallel_build_estimators()`.
- Changed the way `random_state` is generated in `_parallel_build_estimators()`
and `BaseBagging._get_estimators_data_draws()` to direct numpy method to
reflect that seeds created in `BaseBagging._fit()` are trustworthy.
- Due to above removed generation of new seed for each estimator in
`_parallel_build_estimators()` and `BaseBagging._get_estimators_data_draws()`.
- Added documentation to `BaseBagging.estimators_samples_()` property
indicating the reason it's generated dynamically and the associated performance
penalty.
- Returned `BaggingClassifier._set_oob_score()` and `BaggingRegressor._set_oob_score()`
to directly accessing `self.estimators_samples_`.
* PEP8, remove optional arguments, add public function to utils.
- Update indentation and line length to conform to PEP8.
- Update `estimators_samples_()` docstring to conform to PEP8 and
PEP257.
- Remove optional arguments to `BaseBagging._get_estimators_data_draws()`,
rename to `BaseBagging._get_estimators_indices()`.
- Remove optional arguments from `_generate_mask_from_indices()`,
move to `utils.metaestimators`, rename to `indices_to_mask()`.
* Add indices_to_mask to __all__ in utils.metaestimators
* Move utils function, new test for `estimators_samples` correctness.
- Moved `indices_to_mask` from `utils.metaestimators` to `utils.validation`
- Added new test to `ensemble.test_bagging` to make sure refitting
an individual estimator from the bagging ensemble using the corresponding
samples identified in `BaseBagging.estimators_samples` returns the same model.
* Adjust/remove tests, move `indices_to_mask` to `utils.__init__`.
- Remove test_bagging.test_consistent_index_sampling
- Update formatting checks in test_bagging.test_estimators_samples
to make sure each mask is numpy boolean array
- Move indices_to_mask from utils.validation to utils.__init__
* update class docstring for `estimators_samples_`
- Updated class docstring of `estimators_samples_` attribute for `BaggingClassifier` and `BaggingRegressor` to indicate that samples are identified with boolean masks.
* PEP8, made `max_samples` arg optional in _fit()
- Fixed PEP8 issues.
- Gave `max_samples` argument of `BaseBagging._fit()` a default
value of `None` as indicated in the docstring. Added code to
check for and process `None` value.
- Added a few more comments to `_fit()`.
* 2 new `max_samples` consistency tests, update whats_new.rst
* Minor change
* Update whats_new.rst
--------------------
* ENH Reogranize classes/fn from grid_search into search.py
* ENH Reogranize classes/fn from cross_validation into split.py
* ENH Reogranize cls/fn from cross_validation/learning_curve into validate.py
* MAINT Merge _check_cv into check_cv inside the model_selection module
* MAINT Update all the imports to point to the model_selection module
* FIX use iter_cv to iterate throught the new style/old style cv objs
* TST Add tests for the new model_selection members
* ENH Wrap the old-style cv obj/iterables instead of using iter_cv
* ENH Use scipy's binomial coefficient function comb for calucation of nCk
* ENH Few enhancements to the split module
* ENH Improve check_cv input validation and docstring
* MAINT _get_test_folds(X, y, labels) --> _get_test_folds(labels)
* TST if 1d arrays for X introduce any errors
* ENH use 1d X arrays for all tests;
* ENH X_10 --> X (global var)
Minor
-----
* ENH _PartitionIterator --> _BaseCrossValidator;
* ENH CVIterator --> CVIterableWrapper
* TST Import the old SKF locally
* FIX/TST Clean up the split module's tests.
* DOC Improve documentation of the cv parameter
* COSMIT consistently hyphenate cross-validation/cross-validator
* TST Calculate n_samples from X
* COSMIT Use separate lines for each import.
* COSMIT cross_validation_generator --> cross_validator
Commits merged manually
-----------------------
* FIX Document the random_state attribute in RandomSearchCV
* MAINT Use check_cv instead of _check_cv
* ENH refactor OVO decision function, use it in SVC for sklearn-like
decision_function shape
* FIX avoid memory cost when sampling from large parameter grids
ENH Major to Minor incremental enhancements to the model_selection
Squashed commit messages - (For reference)
Major
-----
* ENH p --> n_labels
* FIX *ShuffleSplit: all float/invalid type errors at init and int error at split
* FIX make PredefinedSplit accept test_folds in constructor; Cleanup docstrings
* ENH+TST KFold: make rng to be generated at every split call for reproducibility
* FIX/MAINT KFold: make shuffle a public attr
* FIX Make CVIterableWrapper private.
* FIX reuse len_cv instead of recalculating it
* FIX Prevent adding *SearchCV estimators from the old grid_search module
* re-FIX In all_estimators: the sorting to use only the 1st item (name)
To avoid collision between the old and the new GridSearch classes.
* FIX test_validate.py: Use 2D X (1D X is being detected as a single sample)
* MAINT validate.py --> validation.py
* MAINT make the submodules private
* MAINT Support old cv/gs/lc until 0.19
* FIX/MAINT n_splits --> get_n_splits
* FIX/TST test_logistic.py/test_ovr_multinomial_iris:
pass predefined folds as an iterable
* MAINT expose BaseCrossValidator
* Update the model_selection module with changes from master
- From #5161
- - MAINT remove redundant p variable
- - Add check for sparse prediction in cross_val_predict
- From #5201 - DOC improve random_state param doc
- From #5190 - LabelKFold and test
- From #4583 - LabelShuffleSplit and tests
- From #5300 - shuffle the `labels` not the `indxs` in LabelKFold + tests
- From #5378 - Make the GridSearchCV docs more accurate.
- From #5458 - Remove shuffle from LabelKFold
- From #5466(#4270) - Gaussian Process by Jan Metzen
- From #4826 - Move custom error / warnings into sklearn.exception
Minor
-----
* ENH Make the KFold shuffling test stronger
* FIX/DOC Use the higher level model_selection module as ref
* DOC in check_cv "y : array-like, optional"
* DOC a supervised learning problem --> supervised learning problems
* DOC cross-validators --> cross-validation strategies
* DOC Correct Olivier Grisel's name ;)
* MINOR/FIX cv_indices --> kfold
* FIX/DOC Align the 'See also' section of the new KFold, LeaveOneOut
* TST/FIX imports on separate lines
* FIX use __class__ instead of classmethod
* TST/FIX import directly from model_selection
* COSMIT Relocate the random_state documentation
* COSMIT remove pass
* MAINT Remove deprecation warnings from old tests
* FIX correct import at test_split
* FIX/MAINT Move P_sparse, X, y defns to top; rm unused W_sparse, X_sparse
* FIX random state to avoid doctest failure
* TST n_splits and split wrapping of _CVIterableWrapper
* FIX/MAINT Use multilabel indicator matrix directly
* TST/DOC clarify why we conflate classes 0 and 1
* DOC add comment that this was taken from BaseEstimator
* FIX use of labels is not needed in stratified k fold
* Fix cross_validation reference
* Fix the labels param doc
FIX/DOC/MAINT Addressing the review comments by Arnaud and Andy
COSMIT Sort the members alphabetically
COSMIT len_cv --> n_splits
COSMIT Merge 2 if; FIX Use kwargs
DOC Add my name to the authors :D
DOC make labels parameter consistent
FIX Remove hack for boolean indices; + COSMIT idx --> indices; DOC Add Returns
COSMIT preds --> predictions
DOC Add Returns and neatly arrange X, y, labels
FIX idx(s)/ind(s)--> indice(s)
COSMIT Merge if and else to elif
COSMIT n --> n_samples
COSMIT Use bincount only once
COSMIT cls --> class_i / class_i (ith class indices) -->
perm_indices_class_i
FIX/ENH/TST Addressing the final reviews
COSMIT c --> count
FIX/TST make check_cv raise ValueError for string cv value
TST nested cv (gs inside cross_val_score) works for diff cvs
FIX/ENH Raise ValueError when labels is None for label based cvs;
TST if labels is being passed correctly to the cv and that the
ValueError is being propagated to the cross_val_score/predict and grid
search
FIX pass labels to cross_val_score
FIX use make_classification
DOC Add Returns; COSMIT Remove scaffolding
TST add a test to check the _build_repr helper
REVERT the old GS/RS should also be tested by the common tests.
ENH Add a tuple of all/label based CVS
FIX raise VE even at get_n_splits if labels is None
FIX Fabian's comments
PEP8