julearn 0.3.5.dev140__tar.gz → 0.3.6.dev15__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/PKG-INFO +1 -1
- julearn-0.3.6.dev15/docs/changes/newsfragments/301.misc +1 -0
- julearn-0.3.6.dev15/docs/changes/newsfragments/303.feature +1 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/configuration.rst +13 -0
- julearn-0.3.6.dev15/julearn/_version.py +24 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/api.py +52 -9
- julearn-0.3.6.dev15/julearn/config.py +118 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/_optuna_searcher.py +39 -11
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/_skopt_searcher.py +24 -6
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/available_searchers.py +14 -2
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/models/available_models.py +13 -4
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/pipeline_creator.py +90 -24
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/prepare.py +25 -8
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/scoring/available_scorers.py +15 -3
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/available_transformers.py +7 -1
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/drop_columns.py +2 -1
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/pick_columns.py +2 -1
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/set_column_types.py +10 -2
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/available_target_transformers.py +4 -1
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/ju_generated_target_model.py +3 -2
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/logging.py +37 -1
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn.egg-info/PKG-INFO +1 -1
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn.egg-info/SOURCES.txt +2 -0
- julearn-0.3.5.dev140/julearn/_version.py +0 -34
- julearn-0.3.5.dev140/julearn/config.py +0 -52
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/ISSUE_TEMPLATE/documentation_request.yaml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/dependabot.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/check-stale.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/ci-docs.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/ci.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/docs-preview.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/docs.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/lint.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.github/workflows/publish.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.gitignore +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/.pre-commit-config.yaml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/AUTHORS.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/LICENSE.md +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/README.md +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/codecov.yml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/Makefile +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/_static/css/custom.css +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/_static/js/custom.js +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/_templates/class.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/_templates/function.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/_templates/function_warning.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/_templates/versions.html +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/base.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/config.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/index.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/inspect.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/main.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/model_selection.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/models.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/pipeline.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/prepare.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/scoring.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/stats.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/transformers.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/utils.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/api/viz.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/available_pipeline_steps.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/changes/contributors.inc +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/changes/newsfragments/.gitignore +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/conf.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/contributing.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/examples.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/faq.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/getting_started.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/corrected_ttest.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/final_estimator.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/iris_X.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/iris_df.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/iris_y.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/joblib_htcondor/condor_q.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/joblib_htcondor/ui_main.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/joblib_htcondor/ui_open.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/joblib_htcondor/ui_stacked.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_calm.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_confbias.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_cv.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_generalization.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_it.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_ml.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/julearn_logo_mlit.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/multiple_scorers_run_cv.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/plot_scores.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/scores_run_cv.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/scores_run_cv_splitter.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/images/scores_run_cv_train.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/index.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/links.inc +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/maintaining.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/redirect.html +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/CBPM.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/confound_removal.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/cross_validation_splitter.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/hyperparameter_tuning.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/index.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/joblib.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/model_inspect.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/stacked_models.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/selected_deeper_topics/target_transformers.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/what_really_need_know/cross_validation.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/what_really_need_know/data.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/what_really_need_know/index.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/what_really_need_know/model_comparison.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/what_really_need_know/model_evaluation.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/what_really_need_know/pipeline.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/docs/whats_new.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/plot_cm_acc_multiclass.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/plot_example_regression.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/plot_stratified_kfold_reg.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/run_combine_pandas.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/run_grouped_cv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/00_starting/run_simple_binary_classification.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/01_model_comparison/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/01_model_comparison/plot_simple_model_comparison.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/02_inspection/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/02_inspection/plot_groupcv_inspect_svm.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/02_inspection/plot_inspect_random_forest.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/02_inspection/plot_preprocess.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/02_inspection/run_binary_inspect_folds.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_apply_to_target.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_example_pca_featsets.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_generate_target.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_hyperparameter_multiple_grids.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_hyperparameter_tuning.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_hyperparameter_tuning_bayessearch.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/03_complex_models/run_stacked_models.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/04_confounds/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/04_confounds/plot_confound_removal_classification.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/04_confounds/run_return_confounds.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/05_customization/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/05_customization/run_custom_scorers_regression.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_cbpm_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_confound_removal_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_cv_splitters_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_data_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_hyperparameters_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_model_comparison_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_model_evaluation_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_model_inspection_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_pipeline_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_stacked_models_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/99_docs/run_target_transformer_docs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/README.rst +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/XX_disabled/dis_run_n_jobs.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/examples/XX_disabled/dis_run_target_confound_removal.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/ignore_words.txt +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/base/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/base/column_types.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/base/estimators.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/base/tests/test_base_estimators.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/base/tests/test_column_types.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/conftest.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/external/optuna_searchcv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/_cv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/_pipeline.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/_preprocess.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/inspector.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/tests/test_cv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/tests/test_inspector.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/tests/test_pipeline.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/inspect/tests/test_preprocess.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/continuous_stratified_kfold.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/final_model_cv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/stratified_bootstrap.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/tests/test_available_searchers.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/tests/test_continous_stratified_kfold.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/tests/test_final_model_cv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/tests/test_optuna_searcher.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/tests/test_skopt_searcher.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/tests/test_stratified_bootstrap.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/model_selection/utils.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/models/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/models/dynamic.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/models/tests/test_available_models.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/models/tests/test_dynamic.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/models/tests/test_models.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/merger.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/target_pipeline.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/target_pipeline_creator.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/tests/test_merger.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/tests/test_pipeline_creator.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/tests/test_target_pipeline.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/pipeline/tests/test_target_pipeline_creator.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/scoring/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/scoring/metrics.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/scoring/tests/test_available_scorers.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/scoring/tests/test_metrics.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/stats/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/stats/corrected_ttest.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/stats/tests/test_corrected_ttest.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/tests/test_api.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/tests/test_config.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/tests/test_prepare.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/cbpm.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/confound_remover.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/change_column_types.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/filter_columns.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/tests/test_change_column_types.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/tests/test_drop_columns.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/tests/test_filter_columns.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/dataframe/tests/test_set_column_types.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/ju_column_transformer.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/ju_target_transformer.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/ju_transformed_target_model.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/target_confound_remover.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/tests/test_available_target_transformers.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/tests/test_ju_generated_target_model.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/tests/test_ju_target_transformer.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/tests/test_ju_transformed_target_model.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/target/tests/test_target_confound_remover.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/tests/test_available_transformers.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/tests/test_cbpm.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/tests/test_confounds.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/transformers/tests/test_jucolumntransformers.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/_cv.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/checks.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/testing.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/tests/test_logging.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/tests/test_version.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/typing.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/utils/versions.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/viz/__init__.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/viz/_scores.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn/viz/res/julearn_logo_generalization.png +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn.egg-info/dependency_links.txt +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn.egg-info/requires.txt +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/julearn.egg-info/top_level.txt +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/pyproject.toml +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/setup.cfg +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/setup.py +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/tox.ini +0 -0
- {julearn-0.3.5.dev140 → julearn-0.3.6.dev15}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: julearn
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.6.dev15
|
|
4
4
|
Summary: Juelich Machine Learning Library
|
|
5
5
|
Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Sami Hamdan <s.hamdan@fz-juelich.de>
|
|
6
6
|
Maintainer-email: Sami Hamdan <s.hamdan@fz-juelich.de>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Delay log message formatting by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Allow setting of ``context_func`` for ``joblib-htcondor`` by `Fede Raimondo`_
|
|
@@ -22,15 +22,18 @@ Here you can find the comprehensive list of flags that can be set:
|
|
|
22
22
|
:header-rows: 1
|
|
23
23
|
|
|
24
24
|
* - Flag
|
|
25
|
+
- Value
|
|
25
26
|
- Description
|
|
26
27
|
- Potential problem(s)
|
|
27
28
|
* - ``disable_x_check``
|
|
29
|
+
- ``False``
|
|
28
30
|
- | Disable checking for unmatched column names in ``X``.
|
|
29
31
|
| If set to ``True``, any element in ``X`` that is not present in the
|
|
30
32
|
| dataframe will not result in an error.
|
|
31
33
|
- | The user might think that a certain feature is used in the model when
|
|
32
34
|
| it is not.
|
|
33
35
|
* - ``disable_xtypes_check``
|
|
36
|
+
- ``False``
|
|
34
37
|
- | Disable checking for missing/present ``X_types`` in the ``X`` parameter
|
|
35
38
|
| of the :func:`.run_cross_validation` method.
|
|
36
39
|
| If set to ``True``, the ``X_types`` parameter will not be checked for
|
|
@@ -40,14 +43,17 @@ Here you can find the comprehensive list of flags that can be set:
|
|
|
40
43
|
- | The user might think that a certain feature is considered in the model
|
|
41
44
|
| when it is not.
|
|
42
45
|
* - ``disable_x_verbose``
|
|
46
|
+
- ``False``
|
|
43
47
|
- | Disable printing the list of expanded column names in ``X``.
|
|
44
48
|
| If set to ``True``, the list of column names will not be printed.
|
|
45
49
|
- The user will not see the expanded column names in ``X``.
|
|
46
50
|
* - ``disable_xtypes_verbose``
|
|
51
|
+
- ``False``
|
|
47
52
|
- | Disable printing the list of expanded column names in ``X_types``.
|
|
48
53
|
| If set to ``True``, the list of types of X will not be printed.
|
|
49
54
|
- The user will not see the expanded ``X_types`` column names.
|
|
50
55
|
* - ``enable_parallel_column_transformers``
|
|
56
|
+
- ``False``
|
|
51
57
|
- | This flag enables parallel execution of column transformers by
|
|
52
58
|
| reverting to the default behaviour of scikit-learn
|
|
53
59
|
| (instead of using ``n_jobs=1``)
|
|
@@ -55,6 +61,13 @@ Here you can find the comprehensive list of flags that can be set:
|
|
|
55
61
|
- | Column transformers will be applied in parallel, using more resources.
|
|
56
62
|
| than expected.
|
|
57
63
|
* - ``enable_auto_escape_parenthesis``
|
|
64
|
+
- ``True``
|
|
58
65
|
- | This flag enables escaping parenthesis in column names.
|
|
59
66
|
- | If column names include parenthesis, then they will be treated as regular
|
|
60
67
|
| expression metacharacters and not regular characters.
|
|
68
|
+
* - ``max_x_logs``
|
|
69
|
+
- ``100``
|
|
70
|
+
- | This flag sets the maximum number of columns in ``X`` for which the
|
|
71
|
+
| column names will be printed.
|
|
72
|
+
- | If ``X`` has more columns than this value, the column names will
|
|
73
|
+
| not be printed, and a the number of columns will be displayed instead.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"__version__",
|
|
7
|
+
"__version_tuple__",
|
|
8
|
+
"version",
|
|
9
|
+
"version_tuple",
|
|
10
|
+
"__commit_id__",
|
|
11
|
+
"commit_id",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
version: str
|
|
15
|
+
__version__: str
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
20
|
+
|
|
21
|
+
__version__ = version = '0.3.6.dev15'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 3, 6, 'dev15')
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = 'g4baf848be'
|
|
@@ -10,6 +10,7 @@ from typing import Optional, Union
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
import pandas as pd
|
|
12
12
|
import sklearn
|
|
13
|
+
from joblib.parallel import get_active_backend
|
|
13
14
|
from sklearn.base import BaseEstimator
|
|
14
15
|
from sklearn.model_selection import (
|
|
15
16
|
cross_validate,
|
|
@@ -17,6 +18,7 @@ from sklearn.model_selection import (
|
|
|
17
18
|
from sklearn.model_selection._search import BaseSearchCV
|
|
18
19
|
from sklearn.pipeline import Pipeline
|
|
19
20
|
|
|
21
|
+
from .config import _joblib_htcondor_context_func
|
|
20
22
|
from .inspect import Inspector
|
|
21
23
|
from .model_selection.utils import check_cv
|
|
22
24
|
from .pipeline import PipelineCreator
|
|
@@ -24,6 +26,7 @@ from .pipeline.merger import merge_pipelines
|
|
|
24
26
|
from .prepare import check_consistency, prepare_input_data
|
|
25
27
|
from .scoring import check_scoring
|
|
26
28
|
from .utils import _compute_cvmdsum, logger, raise_error
|
|
29
|
+
from .utils.logging import DelayedFmtMessage as __
|
|
27
30
|
from .utils.typing import CVLike
|
|
28
31
|
|
|
29
32
|
|
|
@@ -185,7 +188,7 @@ def _validate_api_params( # noqa: C901
|
|
|
185
188
|
if seed is not None:
|
|
186
189
|
# If a seed is passed, use it, otherwise do not do anything. User
|
|
187
190
|
# might have set the seed outside of the library
|
|
188
|
-
logger.info(
|
|
191
|
+
logger.info(__("Setting random seed to {seed}", seed=seed))
|
|
189
192
|
np.random.seed(seed)
|
|
190
193
|
|
|
191
194
|
# Interpret the input data and prepare it to be used with the library
|
|
@@ -341,18 +344,32 @@ def _validate_api_params( # noqa: C901
|
|
|
341
344
|
|
|
342
345
|
# Log some information
|
|
343
346
|
logger.info("= Data Information =")
|
|
344
|
-
logger.info(
|
|
345
|
-
|
|
346
|
-
|
|
347
|
+
logger.info(
|
|
348
|
+
__("\tProblem type: {problem_type}", problem_type=problem_type)
|
|
349
|
+
)
|
|
350
|
+
logger.info(__("\tNumber of samples: {n_samples}", n_samples=len(df_X)))
|
|
351
|
+
logger.info(
|
|
352
|
+
__("\tNumber of features: {n_features}", n_features=len(df_X.columns))
|
|
353
|
+
)
|
|
347
354
|
logger.info("====================")
|
|
348
355
|
logger.info("")
|
|
349
356
|
|
|
350
357
|
if problem_type == "classification":
|
|
351
|
-
logger.info(
|
|
352
|
-
|
|
353
|
-
|
|
358
|
+
logger.info(
|
|
359
|
+
__(
|
|
360
|
+
"\tNumber of classes: {n_classes}",
|
|
361
|
+
n_classes=len(np.unique(df_y)),
|
|
362
|
+
)
|
|
363
|
+
)
|
|
364
|
+
logger.info(__("\tTarget type: {target_type}", target_type=df_y.dtype))
|
|
365
|
+
logger.info(
|
|
366
|
+
__(
|
|
367
|
+
"\tClass distributions: {class_distributions}",
|
|
368
|
+
class_distributions=df_y.value_counts(),
|
|
369
|
+
)
|
|
370
|
+
)
|
|
354
371
|
elif problem_type == "regression":
|
|
355
|
-
logger.info(
|
|
372
|
+
logger.info(__("\tTarget type: {target_type}", target_type=df_y.dtype))
|
|
356
373
|
|
|
357
374
|
out = (
|
|
358
375
|
df_X,
|
|
@@ -367,6 +384,28 @@ def _validate_api_params( # noqa: C901
|
|
|
367
384
|
return out
|
|
368
385
|
|
|
369
386
|
|
|
387
|
+
def _check_configure_joblib_backend() -> None:
|
|
388
|
+
"""Check and configure if we are running in a joblib parallel backend."""
|
|
389
|
+
backend, _ = get_active_backend()
|
|
390
|
+
|
|
391
|
+
# If we are in an HTCondor backend, we need to set the context function to
|
|
392
|
+
# set the global configuration variables from both julearn and scikit-
|
|
393
|
+
# learn, as these are not automatically propagated to the workers in
|
|
394
|
+
# non-shared memory backends.
|
|
395
|
+
if backend.__class__.__name__ == "_HTCondorBackend":
|
|
396
|
+
if hasattr(backend, "_context_func"):
|
|
397
|
+
backend._context_func = _joblib_htcondor_context_func(
|
|
398
|
+
current_func=backend._context_func
|
|
399
|
+
)
|
|
400
|
+
else:
|
|
401
|
+
raise_error(
|
|
402
|
+
"Running in an HTCondor backend, but it does not have a "
|
|
403
|
+
"_context_func attribute. Global configuration variables "
|
|
404
|
+
"will not be propagated to the workers. Please update your "
|
|
405
|
+
"joblib-htcondor package to version 0.2.3 or higher."
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
|
|
370
409
|
def run_cross_validation(
|
|
371
410
|
X: list[str], # noqa: N803
|
|
372
411
|
y: str,
|
|
@@ -563,7 +602,7 @@ def run_cross_validation(
|
|
|
563
602
|
classifier=problem_type == "classification",
|
|
564
603
|
include_final_model=include_final_model,
|
|
565
604
|
)
|
|
566
|
-
logger.info(
|
|
605
|
+
logger.info(__("Using outer CV scheme {cv_outer}", cv_outer=cv_outer))
|
|
567
606
|
|
|
568
607
|
groups_needed = check_consistency(df_y, cv, groups, problem_type) # type: ignore
|
|
569
608
|
|
|
@@ -598,6 +637,8 @@ def run_cross_validation(
|
|
|
598
637
|
else:
|
|
599
638
|
_sklearn_deprec_fit_params["fit_params"] = fit_params
|
|
600
639
|
|
|
640
|
+
_check_configure_joblib_backend()
|
|
641
|
+
|
|
601
642
|
scores = cross_validate(
|
|
602
643
|
pipeline,
|
|
603
644
|
df_X,
|
|
@@ -820,6 +861,8 @@ def run_fit(
|
|
|
820
861
|
else:
|
|
821
862
|
_sklearn_deprec_fit_params["fit_params"] = fit_params
|
|
822
863
|
|
|
864
|
+
_check_configure_joblib_backend()
|
|
865
|
+
|
|
823
866
|
logger.info("Fitting final model")
|
|
824
867
|
pipeline.fit(df_X, df_y, **fit_params)
|
|
825
868
|
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"""Global config module."""
|
|
2
|
+
|
|
3
|
+
# Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
|
|
4
|
+
# License: AGPL
|
|
5
|
+
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from .utils import logger, raise_error
|
|
9
|
+
from .utils.logging import DelayedFmtMessage as __
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
_global_config = {}
|
|
13
|
+
_global_config["MAX_X_WARNS"] = 5000
|
|
14
|
+
_global_config["max_x_logs"] = 100
|
|
15
|
+
_global_config["disable_x_check"] = False
|
|
16
|
+
_global_config["disable_xtypes_check"] = False
|
|
17
|
+
_global_config["disable_x_verbose"] = False
|
|
18
|
+
_global_config["disable_xtypes_verbose"] = False
|
|
19
|
+
_global_config["enable_parallel_column_transformers"] = False
|
|
20
|
+
_global_config["enable_auto_escape_parenthesis"] = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def set_config(key: str, value: Any) -> None:
|
|
24
|
+
"""Set a global config value.
|
|
25
|
+
|
|
26
|
+
Parameters
|
|
27
|
+
----------
|
|
28
|
+
key : str
|
|
29
|
+
The key to set.
|
|
30
|
+
value : Any
|
|
31
|
+
The value to set.
|
|
32
|
+
|
|
33
|
+
"""
|
|
34
|
+
if key not in _global_config:
|
|
35
|
+
raise_error(f"Global config {key} does not exist")
|
|
36
|
+
logger.info(
|
|
37
|
+
__("Setting global config {key} to {value}", key=key, value=value)
|
|
38
|
+
)
|
|
39
|
+
_global_config[key] = value
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def get_config(key: str) -> Any:
|
|
43
|
+
"""Get a global config value.
|
|
44
|
+
|
|
45
|
+
Parameters
|
|
46
|
+
----------
|
|
47
|
+
key : str
|
|
48
|
+
The key to get.
|
|
49
|
+
|
|
50
|
+
Returns
|
|
51
|
+
-------
|
|
52
|
+
Any
|
|
53
|
+
The value of the key.
|
|
54
|
+
|
|
55
|
+
"""
|
|
56
|
+
return _global_config.get(key, None)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _joblib_htcondor_context_func(current_func=None) -> None:
|
|
60
|
+
"""Create a function to seet the config variables.
|
|
61
|
+
|
|
62
|
+
Parameters
|
|
63
|
+
----------
|
|
64
|
+
current_func : function
|
|
65
|
+
The current function that was set in the joblib context. If not None,
|
|
66
|
+
it will be called before setting the config variables (default None).
|
|
67
|
+
|
|
68
|
+
Returns
|
|
69
|
+
-------
|
|
70
|
+
function
|
|
71
|
+
A function to set the config variables.
|
|
72
|
+
|
|
73
|
+
"""
|
|
74
|
+
from copy import deepcopy
|
|
75
|
+
from functools import partial
|
|
76
|
+
|
|
77
|
+
import sklearn
|
|
78
|
+
|
|
79
|
+
# Copy the global config
|
|
80
|
+
_config = {}
|
|
81
|
+
_config["julearn_config"] = deepcopy(_global_config)
|
|
82
|
+
|
|
83
|
+
_config["sklearn_config"] = sklearn.get_config()
|
|
84
|
+
|
|
85
|
+
# add the logging configuration
|
|
86
|
+
level = logger.level
|
|
87
|
+
fmt = None
|
|
88
|
+
if len(logger.handlers) > 0:
|
|
89
|
+
fmt = logger.handlers[0].formatter._fmt # type: ignore
|
|
90
|
+
|
|
91
|
+
_config["julearn_logging_config"] = {
|
|
92
|
+
"level": level,
|
|
93
|
+
"output_format": fmt,
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# Log the current function, if any, to be called before setting the config
|
|
97
|
+
_config["jht_current_func"] = current_func
|
|
98
|
+
|
|
99
|
+
def _set_context_vars(**kwargs):
|
|
100
|
+
# First, call the previous function
|
|
101
|
+
jht_current_func = kwargs.pop("jht_current_func")
|
|
102
|
+
if jht_current_func is not None:
|
|
103
|
+
jht_current_func()
|
|
104
|
+
|
|
105
|
+
# Julearn then sets the config variables. If user has set any variable
|
|
106
|
+
# in the context function, current julearn state should override this
|
|
107
|
+
# setting.
|
|
108
|
+
for key, value in kwargs.items():
|
|
109
|
+
if key == "sklearn_config":
|
|
110
|
+
sklearn.set_config(**value)
|
|
111
|
+
elif key == "julearn_logging_config":
|
|
112
|
+
from julearn.utils import configure_logging
|
|
113
|
+
configure_logging(**value)
|
|
114
|
+
elif key == "julearn_config":
|
|
115
|
+
for k, v in value.items():
|
|
116
|
+
set_config(k, v)
|
|
117
|
+
|
|
118
|
+
return partial(_set_context_vars, **_config) # type: ignore
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
8
|
from ..utils import logger
|
|
9
|
+
from ..utils.logging import DelayedFmtMessage as __
|
|
9
10
|
from .available_searchers import _recreate_reset_copy, register_searcher
|
|
10
11
|
|
|
11
12
|
|
|
@@ -90,32 +91,57 @@ def _prepare_optuna_hyperparameters_distributions(
|
|
|
90
91
|
if v[2] == "uniform":
|
|
91
92
|
if isinstance(v[0], int) and isinstance(v[1], int):
|
|
92
93
|
logger.info(
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
__(
|
|
95
|
+
"Hyperparameter {k} is uniform integer "
|
|
96
|
+
"[{v1}, {v2}]",
|
|
97
|
+
k=k,
|
|
98
|
+
v1=v[0],
|
|
99
|
+
v2=v[1],
|
|
100
|
+
)
|
|
95
101
|
)
|
|
96
102
|
out[k] = optd.IntDistribution(v[0], v[1], log=False)
|
|
97
103
|
else:
|
|
98
104
|
logger.info(
|
|
99
|
-
|
|
105
|
+
__(
|
|
106
|
+
"Hyperparameter {k} is uniform float [{v1}, {v2}]",
|
|
107
|
+
k=k,
|
|
108
|
+
v1=v[0],
|
|
109
|
+
v2=v[1],
|
|
110
|
+
)
|
|
100
111
|
)
|
|
101
112
|
out[k] = optd.FloatDistribution(v[0], v[1], log=False)
|
|
102
113
|
elif v[2] == "log-uniform":
|
|
103
114
|
if isinstance(v[0], int) and isinstance(v[1], int):
|
|
104
115
|
logger.info(
|
|
105
|
-
|
|
106
|
-
|
|
116
|
+
__(
|
|
117
|
+
"Hyperparameter {k} is log-uniform int "
|
|
118
|
+
"[{v1}, {v2}]",
|
|
119
|
+
k=k,
|
|
120
|
+
v1=v[0],
|
|
121
|
+
v2=v[1],
|
|
122
|
+
)
|
|
107
123
|
)
|
|
108
124
|
out[k] = optd.IntDistribution(v[0], v[1], log=True)
|
|
109
125
|
else:
|
|
110
126
|
logger.info(
|
|
111
|
-
|
|
112
|
-
|
|
127
|
+
__(
|
|
128
|
+
"Hyperparameter {k} is log-uniform float "
|
|
129
|
+
"[{v1}, {v2}]",
|
|
130
|
+
k=k,
|
|
131
|
+
v1=v[0],
|
|
132
|
+
v2=v[1],
|
|
133
|
+
)
|
|
113
134
|
)
|
|
114
135
|
out[k] = optd.FloatDistribution(v[0], v[1], log=True)
|
|
115
136
|
elif v[2] == "categorical":
|
|
116
137
|
logger.info(
|
|
117
|
-
|
|
118
|
-
|
|
138
|
+
__(
|
|
139
|
+
"Hyperparameter {k} is categorical with 2 "
|
|
140
|
+
"options: [{v1} and {v2}]",
|
|
141
|
+
k=k,
|
|
142
|
+
v1=v[0],
|
|
143
|
+
v2=v[1],
|
|
144
|
+
)
|
|
119
145
|
)
|
|
120
146
|
out[k] = optd.CategoricalDistribution((v[0], v[1]))
|
|
121
147
|
else:
|
|
@@ -125,9 +151,11 @@ def _prepare_optuna_hyperparameters_distributions(
|
|
|
125
151
|
and isinstance(v[-1], str)
|
|
126
152
|
and v[-1] == "categorical"
|
|
127
153
|
):
|
|
128
|
-
logger.info(
|
|
154
|
+
logger.info(
|
|
155
|
+
__("Hyperparameter {k} is categorical [{v}]", k=k, v=v[:-1])
|
|
156
|
+
)
|
|
129
157
|
out[k] = optd.CategoricalDistribution(v[:-1])
|
|
130
158
|
else:
|
|
131
|
-
logger.info(
|
|
159
|
+
logger.info(__("Hyperparameter {k} as is {v}", k=k, v=v))
|
|
132
160
|
out[k] = v
|
|
133
161
|
return out
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
8
|
from ..utils import logger
|
|
9
|
+
from ..utils.logging import DelayedFmtMessage as __
|
|
9
10
|
from .available_searchers import _recreate_reset_copy, register_searcher
|
|
10
11
|
|
|
11
12
|
|
|
@@ -65,22 +66,39 @@ def _prepare_skopt_hyperparameters_distributions(
|
|
|
65
66
|
prior = v[2]
|
|
66
67
|
if prior == "categorical":
|
|
67
68
|
logger.info(
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
__(
|
|
70
|
+
"Hyperparameter {k} is categorical with 2 "
|
|
71
|
+
"options: [{v1} and {v2}]",
|
|
72
|
+
k=k,
|
|
73
|
+
v1=v[0],
|
|
74
|
+
v2=v[1],
|
|
75
|
+
)
|
|
70
76
|
)
|
|
71
77
|
out[k] = sksp.Categorical(v[:-1])
|
|
72
78
|
elif isinstance(v[0], int) and isinstance(v[1], int):
|
|
73
79
|
logger.info(
|
|
74
|
-
|
|
80
|
+
__(
|
|
81
|
+
"Hyperparameter {k} is {prior} integer [{v1}, {v2}]",
|
|
82
|
+
k=k,
|
|
83
|
+
prior=prior,
|
|
84
|
+
v1=v[0],
|
|
85
|
+
v2=v[1],
|
|
86
|
+
)
|
|
75
87
|
)
|
|
76
88
|
out[k] = sksp.Integer(v[0], v[1], prior=prior)
|
|
77
89
|
elif isinstance(v[0], float) and isinstance(v[1], float):
|
|
78
90
|
logger.info(
|
|
79
|
-
|
|
91
|
+
__(
|
|
92
|
+
"Hyperparameter {k} is {prior} float [{v1}, {v2}]",
|
|
93
|
+
k=k,
|
|
94
|
+
prior=prior,
|
|
95
|
+
v1=v[0],
|
|
96
|
+
v2=v[1],
|
|
97
|
+
)
|
|
80
98
|
)
|
|
81
99
|
out[k] = sksp.Real(v[0], v[1], prior=prior)
|
|
82
100
|
else:
|
|
83
|
-
logger.info(
|
|
101
|
+
logger.info(__("Hyperparameter {k} as is {v}", k=k, v=v))
|
|
84
102
|
out[k] = v
|
|
85
103
|
elif (
|
|
86
104
|
isinstance(v, tuple)
|
|
@@ -89,6 +107,6 @@ def _prepare_skopt_hyperparameters_distributions(
|
|
|
89
107
|
):
|
|
90
108
|
out[k] = sksp.Categorical(v[:-1])
|
|
91
109
|
else:
|
|
92
|
-
logger.info(
|
|
110
|
+
logger.info(__("Hyperparameter {k} as is {v}", k=k, v=v))
|
|
93
111
|
out[k] = v
|
|
94
112
|
return out
|
|
@@ -9,7 +9,14 @@ from typing import Optional, Union
|
|
|
9
9
|
|
|
10
10
|
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
|
|
11
11
|
|
|
12
|
-
from julearn.utils.logging import
|
|
12
|
+
from julearn.utils.logging import (
|
|
13
|
+
DelayedFmtMessage as __,
|
|
14
|
+
)
|
|
15
|
+
from julearn.utils.logging import (
|
|
16
|
+
logger,
|
|
17
|
+
raise_error,
|
|
18
|
+
warn_with_log,
|
|
19
|
+
)
|
|
13
20
|
|
|
14
21
|
|
|
15
22
|
_available_searchers = {
|
|
@@ -125,7 +132,12 @@ def register_searcher(
|
|
|
125
132
|
"Set `overwrite=True` in case you want to "
|
|
126
133
|
"overwrite existing searchers."
|
|
127
134
|
)
|
|
128
|
-
logger.info(
|
|
135
|
+
logger.info(
|
|
136
|
+
__(
|
|
137
|
+
"Registering new searcher: {searcher_name}",
|
|
138
|
+
searcher_name=searcher_name,
|
|
139
|
+
)
|
|
140
|
+
)
|
|
129
141
|
_available_searchers[searcher_name] = {
|
|
130
142
|
"class": searcher,
|
|
131
143
|
"params_attr": params_attr,
|
|
@@ -47,6 +47,7 @@ from sklearn.naive_bayes import (
|
|
|
47
47
|
from sklearn.svm import SVC, SVR
|
|
48
48
|
|
|
49
49
|
from ..utils import logger, raise_error, warn_with_log
|
|
50
|
+
from ..utils.logging import DelayedFmtMessage as __
|
|
50
51
|
from ..utils.typing import ModelLike
|
|
51
52
|
from .dynamic import DynamicSelection
|
|
52
53
|
|
|
@@ -256,15 +257,23 @@ def register_model(
|
|
|
256
257
|
)
|
|
257
258
|
|
|
258
259
|
logger.info(
|
|
259
|
-
|
|
260
|
-
|
|
260
|
+
__(
|
|
261
|
+
"registering model named {model_name} "
|
|
262
|
+
"with problem_type {problem_type}",
|
|
263
|
+
model_name=model_name,
|
|
264
|
+
problem_type=problem_type,
|
|
265
|
+
)
|
|
261
266
|
)
|
|
262
267
|
|
|
263
268
|
_available_models[model_name][problem_type] = cls
|
|
264
269
|
else:
|
|
265
270
|
logger.info(
|
|
266
|
-
|
|
267
|
-
|
|
271
|
+
__(
|
|
272
|
+
"registering model named {model_name} "
|
|
273
|
+
"with problem_type {problem_type}",
|
|
274
|
+
model_name=model_name,
|
|
275
|
+
problem_type=problem_type,
|
|
276
|
+
)
|
|
268
277
|
)
|
|
269
278
|
_available_models[model_name] = {problem_type: cls}
|
|
270
279
|
|