From 29f2006fccf0b27fdb8c6f4c597199cf44f84df1 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 12:11:34 +0200 Subject: [PATCH 01/43] Rename file --- ..._extraction.py => plot_grid_search_text_feature_extraction.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/model_selection/{grid_search_text_feature_extraction.py => plot_grid_search_text_feature_extraction.py} (100%) diff --git a/examples/model_selection/grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py similarity index 100% rename from examples/model_selection/grid_search_text_feature_extraction.py rename to examples/model_selection/plot_grid_search_text_feature_extraction.py From 9fe3d7d83c572eaaf43e165e865c958ec3262fad Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 12:13:36 +0200 Subject: [PATCH 02/43] Update references to new file name --- doc/modules/compose.rst | 2 +- doc/modules/cross_validation.rst | 2 +- doc/modules/feature_extraction.rst | 2 +- doc/modules/grid_search.rst | 2 +- sklearn/datasets/descr/twenty_newsgroups.rst | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/modules/compose.rst b/doc/modules/compose.rst index c797eb288c6e5..4a61b5ec5f118 100644 --- a/doc/modules/compose.rst +++ b/doc/modules/compose.rst @@ -163,7 +163,7 @@ You can also provide custom feature names for the input data using .. topic:: Examples: * :ref:`sphx_glr_auto_examples_feature_selection_plot_feature_selection_pipeline.py` - * :ref:`sphx_glr_auto_examples_model_selection_grid_search_text_feature_extraction.py` + * :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` * :ref:`sphx_glr_auto_examples_compose_plot_digits_pipe.py` * :ref:`sphx_glr_auto_examples_miscellaneous_plot_kernel_approximation.py` * :ref:`sphx_glr_auto_examples_svm_plot_svm_anova.py` diff --git a/doc/modules/cross_validation.rst b/doc/modules/cross_validation.rst index 3ecab9bd8eb04..d353c3ed326e2 100644 --- a/doc/modules/cross_validation.rst +++ b/doc/modules/cross_validation.rst @@ -295,7 +295,7 @@ section. * :ref:`sphx_glr_auto_examples_model_selection_plot_roc_crossval.py`, * :ref:`sphx_glr_auto_examples_feature_selection_plot_rfe_with_cross_validation.py`, * :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`, - * :ref:`sphx_glr_auto_examples_model_selection_grid_search_text_feature_extraction.py`, + * :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py`, * :ref:`sphx_glr_auto_examples_model_selection_plot_cv_predict.py`, * :ref:`sphx_glr_auto_examples_model_selection_plot_nested_cross_validation_iris.py`. diff --git a/doc/modules/feature_extraction.rst b/doc/modules/feature_extraction.rst index a07d722defb9b..28053571f6ff0 100644 --- a/doc/modules/feature_extraction.rst +++ b/doc/modules/feature_extraction.rst @@ -607,7 +607,7 @@ As usual the best way to adjust the feature extraction parameters is to use a cross-validated grid search, for instance by pipelining the feature extractor with a classifier: - * :ref:`sphx_glr_auto_examples_model_selection_grid_search_text_feature_extraction.py` + * :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` Decoding text files diff --git a/doc/modules/grid_search.rst b/doc/modules/grid_search.rst index ad3f24f23980a..e4cc62b7773f3 100644 --- a/doc/modules/grid_search.rst +++ b/doc/modules/grid_search.rst @@ -77,7 +77,7 @@ evaluated and the best combination is retained. - See :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py` for an example of Grid Search computation on the digits dataset. - - See :ref:`sphx_glr_auto_examples_model_selection_grid_search_text_feature_extraction.py` for an example + - See :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` for an example of Grid Search coupling parameters from a text documents feature extractor (n-gram count vectorizer and TF-IDF transformer) with a classifier (here a linear SVM trained with SGD with either elastic diff --git a/sklearn/datasets/descr/twenty_newsgroups.rst b/sklearn/datasets/descr/twenty_newsgroups.rst index a7542ea57d529..595e04e18caa2 100644 --- a/sklearn/datasets/descr/twenty_newsgroups.rst +++ b/sklearn/datasets/descr/twenty_newsgroups.rst @@ -216,7 +216,7 @@ It loses even more if we also strip this metadata from the training data: 0.76995... Some other classifiers cope better with this harder version of the task. Try -running :ref:`sphx_glr_auto_examples_model_selection_grid_search_text_feature_extraction.py` with and without +running :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` with and without the ``--filter`` option to compare the results. .. topic:: Data Considerations @@ -248,6 +248,6 @@ the ``--filter`` option to compare the results. .. topic:: Examples - * :ref:`sphx_glr_auto_examples_model_selection_grid_search_text_feature_extraction.py` + * :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` * :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` From 497178a00121144fab5f91762821ae6d15ec4139 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 12:14:15 +0200 Subject: [PATCH 03/43] First step to improve notebook style --- ...lot_grid_search_text_feature_extraction.py | 97 ++++++------------- 1 file changed, 32 insertions(+), 65 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 91801b361265b..be97bc64ed4b0 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -10,35 +10,6 @@ You can adjust the number of categories by giving their names to the dataset loader or setting them to None to get the 20 of them. -Here is a sample output of a run on a quad-core machine:: - - Loading 20 newsgroups dataset for categories: - ['alt.atheism', 'talk.religion.misc'] - 1427 documents - 2 categories - - Performing grid search... - pipeline: ['vect', 'tfidf', 'clf'] - parameters: - {'clf__alpha': (1.0000000000000001e-05, 9.9999999999999995e-07), - 'clf__max_iter': (10, 50, 80), - 'clf__penalty': ('l2', 'elasticnet'), - 'tfidf__use_idf': (True, False), - 'vect__max_n': (1, 2), - 'vect__max_df': (0.5, 0.75, 1.0), - 'vect__max_features': (None, 5000, 10000, 50000)} - done in 1737.030s - - Best score: 0.940 - Best parameters set: - clf__alpha: 9.9999999999999995e-07 - clf__max_iter: 50 - clf__penalty: 'elasticnet' - tfidf__use_idf: True - vect__max_n: 2 - vect__max_df: 0.75 - vect__max_features: 50000 - """ # Author: Olivier Grisel @@ -49,69 +20,63 @@ # %% # Data loading # ------------ - -from pprint import pprint -from time import time -import logging +# We load two categories from the training set. Set `categories=None` to do the +# analysis on all the categories. from sklearn.datasets import fetch_20newsgroups -from sklearn.feature_extraction.text import CountVectorizer -from sklearn.feature_extraction.text import TfidfTransformer -from sklearn.linear_model import SGDClassifier -from sklearn.model_selection import GridSearchCV -from sklearn.pipeline import Pipeline - -# Display progress logs on stdout -logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s") -# Load some categories from the training set categories = [ "alt.atheism", "talk.religion.misc", ] -# Uncomment the following to do the analysis on all the categories -# categories = None - -print("Loading 20 newsgroups dataset for categories:") -print(categories) - data = fetch_20newsgroups(subset="train", categories=categories) -print("%d documents" % len(data.filenames)) -print("%d categories" % len(data.target_names)) -print() + +print(f"Loading 20 newsgroups dataset for {len(data.target_names)} categories:") +print(data.target_names) +print(f"{len(data.data)} documents") # %% # Pipeline with hyperparameter tuning # ----------------------------------- +# We define a pipeline combining a text feature vectorizer with a simple +# classifier. We also define a set of parameters to use for grid search. +# Uncommenting more parameters will give better exploring power but will +# increase processing time in a combinatorial way. + +from sklearn.feature_extraction.text import TfidfVectorizer +from sklearn.linear_model import SGDClassifier +from sklearn.pipeline import Pipeline -# Define a pipeline combining a text feature extractor with a simple classifier pipeline = Pipeline( [ - ("vect", CountVectorizer()), - ("tfidf", TfidfTransformer()), + ("vect", TfidfVectorizer), ("clf", SGDClassifier()), ] ) -# Parameters to use for grid search. Uncommenting more parameters will give -# better exploring power but will increase processing time in a combinatorial -# way parameters = { "vect__max_df": (0.5, 0.75, 1.0), # 'vect__max_features': (None, 5000, 10000, 50000), "vect__ngram_range": ((1, 1), (1, 2)), # unigrams or bigrams - # 'tfidf__use_idf': (True, False), - # 'tfidf__norm': ('l1', 'l2'), + # 'vect__use_idf': (True, False), + # 'vect__norm': ('l1', 'l2'), "clf__max_iter": (20,), "clf__alpha": (0.00001, 0.000001), "clf__penalty": ("l2", "elasticnet"), # 'clf__max_iter': (10, 50, 80), } -# Find the best parameters for both the feature extraction and the -# classifier -grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1, verbose=1) +# %% +# Find the best parameters for both the feature extraction and the classifier. + +from pprint import pprint +from time import time +from sklearn.model_selection import GridSearchCV + +grid_search = GridSearchCV( + estimator=pipeline, param_grid=parameters, n_jobs=-1, verbose=1 +) print("Performing grid search...") print("pipeline:", [name for name, _ in pipeline.steps]) @@ -119,11 +84,13 @@ pprint(parameters) t0 = time() grid_search.fit(data.data, data.target) -print("done in %0.3fs" % (time() - t0)) +print(f"done in {time() - t0:.3f}s") print() -print("Best score: %0.3f" % grid_search.best_score_) +print("Best score: {grid_search.best_score_:.3f}") print("Best parameters set:") best_parameters = grid_search.best_estimator_.get_params() for param_name in sorted(parameters.keys()): - print("\t%s: %r" % (param_name, best_parameters[param_name])) + print(f"{param_name}: {best_parameters[param_name]}") + +# %% From 8765fc631a6a21b0bee6d9ce65bf3de7be993df7 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 15:45:32 +0200 Subject: [PATCH 04/43] Tune ComplementNB instead of SGDClassifier --- ...lot_grid_search_text_feature_extraction.py | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index be97bc64ed4b0..1877c9837489f 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -30,11 +30,17 @@ "talk.religion.misc", ] -data = fetch_20newsgroups(subset="train", categories=categories) +data_train = fetch_20newsgroups( + subset="train", + categories=categories, + shuffle=True, + random_state=42, + remove=("headers", "footers", "quotes"), +) -print(f"Loading 20 newsgroups dataset for {len(data.target_names)} categories:") -print(data.target_names) -print(f"{len(data.data)} documents") +print(f"Loading 20 newsgroups dataset for {len(data_train.target_names)} categories:") +print(data_train.target_names) +print(f"{len(data_train.data)} documents") # %% # Pipeline with hyperparameter tuning @@ -45,26 +51,23 @@ # increase processing time in a combinatorial way. from sklearn.feature_extraction.text import TfidfVectorizer -from sklearn.linear_model import SGDClassifier +from sklearn.naive_bayes import ComplementNB from sklearn.pipeline import Pipeline pipeline = Pipeline( [ - ("vect", TfidfVectorizer), - ("clf", SGDClassifier()), + ("vect", TfidfVectorizer()), + ("clf", ComplementNB()), ] ) parameters = { "vect__max_df": (0.5, 0.75, 1.0), + "vect__min_df": (1, 3, 5), # 'vect__max_features': (None, 5000, 10000, 50000), "vect__ngram_range": ((1, 1), (1, 2)), # unigrams or bigrams - # 'vect__use_idf': (True, False), # 'vect__norm': ('l1', 'l2'), - "clf__max_iter": (20,), - "clf__alpha": (0.00001, 0.000001), - "clf__penalty": ("l2", "elasticnet"), - # 'clf__max_iter': (10, 50, 80), + "clf__alpha": (0.01, 0.1), } # %% @@ -83,7 +86,7 @@ print("parameters:") pprint(parameters) t0 = time() -grid_search.fit(data.data, data.target) +grid_search.fit(data_train.data, data_train.target) print(f"done in {time() - t0:.3f}s") print() From ce1f9a9eb62e5882e91bcdaf9d5e5bf3e582f9fe Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 16:28:06 +0200 Subject: [PATCH 05/43] Add score accuracy on test set --- .../plot_grid_search_text_feature_extraction.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 1877c9837489f..b19b037250145 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -38,6 +38,14 @@ remove=("headers", "footers", "quotes"), ) +data_test = fetch_20newsgroups( + subset="test", + categories=categories, + shuffle=True, + random_state=42, + remove=("headers", "footers", "quotes"), +) + print(f"Loading 20 newsgroups dataset for {len(data_train.target_names)} categories:") print(data_train.target_names) print(f"{len(data_train.data)} documents") @@ -89,11 +97,11 @@ grid_search.fit(data_train.data, data_train.target) print(f"done in {time() - t0:.3f}s") print() - -print("Best score: {grid_search.best_score_:.3f}") print("Best parameters set:") best_parameters = grid_search.best_estimator_.get_params() for param_name in sorted(parameters.keys()): print(f"{param_name}: {best_parameters[param_name]}") -# %% +accuracy = grid_search.score(data_test.data, data_test.target) +print(f"Best train accuracy: {grid_search.best_score_:.3f}") +print(f"Accuracy on test set: {accuracy:.3f}") From 1c2a102f57de16092a5906d7db96d4f3d752219c Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 16:29:18 +0200 Subject: [PATCH 06/43] Add reference to grid search in text classification example --- examples/text/plot_document_classification_20newsgroups.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/text/plot_document_classification_20newsgroups.py b/examples/text/plot_document_classification_20newsgroups.py index b53920178aa86..ea3b26cd1b6b0 100644 --- a/examples/text/plot_document_classification_20newsgroups.py +++ b/examples/text/plot_document_classification_20newsgroups.py @@ -334,7 +334,10 @@ def benchmark(clf, custom_name=False): # such a multi-class text classification problem. # # Notice that the most important hyperparameters values were tuned using a grid -# search procedure not shown in this notebook for the sake of simplicity. +# search procedure not shown in this notebook for the sake of simplicity. See +# the example script +# :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` +# for a demo on how such tuning can be done. from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC From 4f08c16833b2e73d8e3a58d8f09c83a89ada49eb Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 17:01:58 +0200 Subject: [PATCH 07/43] Add reference to text classification example --- .../plot_grid_search_text_feature_extraction.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index b19b037250145..6075ccd0bd760 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -4,11 +4,14 @@ ========================================================== The dataset used in this example is the 20 newsgroups dataset which will be -automatically downloaded and then cached and reused for the document +automatically downloaded, cached and reused for the document classification example. -You can adjust the number of categories by giving their names to the dataset -loader or setting them to None to get the 20 of them. +In this example we tune the hyperparameters of a particular classifier using a +:class:`~sklearn.model_selection.GridSearchCV`. For a demo on the performance of +some other classifiers, see the +:ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` +notebook. """ @@ -20,8 +23,9 @@ # %% # Data loading # ------------ -# We load two categories from the training set. Set `categories=None` to do the -# analysis on all the categories. +# We load two categories from the training set. You can adjust the number of +# categories by giving their names to the dataset loader or setting them to None +# to get the 20 of them. from sklearn.datasets import fetch_20newsgroups From 58ed079c1437118a833f0e72b146735e620bbca7 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Thu, 23 Jun 2022 17:03:16 +0200 Subject: [PATCH 08/43] Improve references to the twenty_newsgroup description --- sklearn/datasets/descr/twenty_newsgroups.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sklearn/datasets/descr/twenty_newsgroups.rst b/sklearn/datasets/descr/twenty_newsgroups.rst index 595e04e18caa2..77b0712e4c122 100644 --- a/sklearn/datasets/descr/twenty_newsgroups.rst +++ b/sklearn/datasets/descr/twenty_newsgroups.rst @@ -215,9 +215,9 @@ It loses even more if we also strip this metadata from the training data: >>> metrics.f1_score(newsgroups_test.target, pred, average='macro') 0.76995... -Some other classifiers cope better with this harder version of the task. Try -running :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` with and without -the ``--filter`` option to compare the results. +Some other classifiers cope better with this harder version of the task. Try the +:ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` +example with and without the `remove` option to compare the results. .. topic:: Data Considerations @@ -251,3 +251,7 @@ the ``--filter`` option to compare the results. * :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_text_feature_extraction.py` * :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` + + * :ref:`sphx_glr_auto_examples_text_plot_hashing_vs_dict_vectorizer.py` + + * :ref:`sphx_glr_auto_examples_text_plot_document_clustering.py` From e62f74ecb4db5497c4350f9b0d52675f643a3a1f Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Mon, 27 Jun 2022 11:47:24 +0200 Subject: [PATCH 09/43] Add plotly to CI --- build_tools/update_environments_and_lock_files.py | 1 + sklearn/_min_dependencies.py | 1 + 2 files changed, 2 insertions(+) diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index a06fded6c3469..da411d53601f2 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -238,6 +238,7 @@ def remove_from(alist, to_remove): "numpydoc": "min", "sphinx-prompt": "min", "sphinxext-opengraph": "min", + "plotly": "min", }, }, { diff --git a/sklearn/_min_dependencies.py b/sklearn/_min_dependencies.py index f055037d78be9..2f7e069af5df7 100644 --- a/sklearn/_min_dependencies.py +++ b/sklearn/_min_dependencies.py @@ -47,6 +47,7 @@ "Pillow": ("7.1.2", "docs"), "sphinx-prompt": ("1.3.0", "docs"), "sphinxext-opengraph": ("0.4.2", "docs"), + "plotly": ("4.14.3", "docs, examples"), # XXX: Pin conda-lock to the latest released version (needs manual update # from time to time) "conda-lock": ("1.0.5", "maintenance"), From 1b12759cfd3183a05333a36bb627520564bb58da Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Mon, 27 Jun 2022 17:31:32 +0200 Subject: [PATCH 10/43] Add parallel coordinate plot and interpretation --- ...lot_grid_search_text_feature_extraction.py | 69 ++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 6075ccd0bd760..fa3604617b67d 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -107,5 +107,72 @@ print(f"{param_name}: {best_parameters[param_name]}") accuracy = grid_search.score(data_test.data, data_test.target) -print(f"Best train accuracy: {grid_search.best_score_:.3f}") +print(f"Best accuracy on the grid search: {grid_search.best_score_:.3f}") print(f"Accuracy on test set: {accuracy:.3f}") + +# %% +# Finally, we use a `plotly.express.parallel_coordinates +# `_ +# to visualize the results from the +# :class:`~sklearn.model_selection.GridSearchCV`. + +import pandas as pd +import plotly.express as px + + +def shorten_param(param_name): + if "__" in param_name: + return param_name.rsplit("__", 1)[1] + return param_name + + +cv_results = pd.DataFrame(grid_search.cv_results_) +# monograms are mapped to index 1 and bigrams to index 2 +cv_results["param_vect__ngram_range"] = cv_results["param_vect__ngram_range"].apply( + lambda x: x[1] +) + +column_results = [f"param_{name}" for name in parameters.keys()] +column_results += ["mean_test_score"] + +fig = px.parallel_coordinates( + cv_results[column_results] + .rename(shorten_param, axis=1) + .apply(dict.fromkeys(map(shorten_param, column_results), lambda x: x)), + color="mean_test_score", + color_continuous_scale=px.colors.sequential.Jet, +) +fig.show() + +# %% +# The parallel coordinates plot displays the values of the hyperparameters on +# different columns while the performance metric is color coded. It allows us to +# quickly inspect the combinations of hyperparameters that maximize the +# performance. +# +# It is possible to select a range of results by clicking and holding on any +# axis of the parallel coordinate plot. You can then slide (move) the range +# selection and cross two selections to see the intersections. You can undo a +# selection by clicking once again on the same axis. +# +# In particular for this hyperparameter search, it is interesting to notice that +# the top performing models (dark red lines with mean test score > 0.82) are +# reached when `min_df=1` and `alpha=0.01`, regardless of the value of +# `max_df` and the `ngram_range`. + +# %% +column_results += ["std_test_score"] +cv_results = ( + cv_results[column_results] + .rename(shorten_param, axis=1) + .sort_values("mean_test_score", ascending=False) +) +cv_results + +# %% +# By a manual inspection of the results, one can notice that the top performing +# models overlap within one standard deviation of their test score, showing that +# `max_df` and `ngram_range` are indeed not meaningful parameters in this +# particular case. For more information on how to customize a +# :class:`~sklearn.model_selection.GridSearchCV`, see the example notebook +# :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. From a0157a6afc5f998ce59997e71c7c635485f45bc4 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Mon, 27 Jun 2022 17:33:39 +0200 Subject: [PATCH 11/43] Update plotly version --- sklearn/_min_dependencies.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/_min_dependencies.py b/sklearn/_min_dependencies.py index 2f7e069af5df7..977d6a680f842 100644 --- a/sklearn/_min_dependencies.py +++ b/sklearn/_min_dependencies.py @@ -47,7 +47,7 @@ "Pillow": ("7.1.2", "docs"), "sphinx-prompt": ("1.3.0", "docs"), "sphinxext-opengraph": ("0.4.2", "docs"), - "plotly": ("4.14.3", "docs, examples"), + "plotly": ("5.9.0", "docs, examples"), # XXX: Pin conda-lock to the latest released version (needs manual update # from time to time) "conda-lock": ("1.0.5", "maintenance"), From fc4667b11ef5a0eaa8ce3b6604d82d615063c7bd Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Mon, 27 Jun 2022 23:14:47 +0200 Subject: [PATCH 12/43] Add plotly to conda dependencies --- build_tools/update_environments_and_lock_files.py | 1 + 1 file changed, 1 insertion(+) diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index da411d53601f2..cd060d8412680 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -223,6 +223,7 @@ def remove_from(alist, to_remove): "sphinx-gallery", "numpydoc", "sphinx-prompt", + "plotly", ], "pip_dependencies": ["sphinxext-opengraph"], "package_constraints": { From 24db4a16918cf455782f8cf83b09454396c05cc0 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Mon, 27 Jun 2022 23:28:13 +0200 Subject: [PATCH 13/43] Add plotly to build name doc --- build_tools/update_environments_and_lock_files.py | 1 + 1 file changed, 1 insertion(+) diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index cd060d8412680..43bceca9b2152 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -257,6 +257,7 @@ def remove_from(alist, to_remove): "sphinx-gallery", "numpydoc", "sphinx-prompt", + "plotly", ], "pip_dependencies": ["sphinxext-opengraph"], "package_constraints": { From 0e48c5949a44eb6a914a563663668d57ee4daded Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 28 Jun 2022 11:10:13 +0200 Subject: [PATCH 14/43] Update enviroments and lock files --- build_tools/github/doc_environment.yml | 1 + build_tools/github/doc_linux-64_conda.lock | 111 ++++++++++-------- .../doc_min_dependencies_environment.yml | 1 + .../doc_min_dependencies_linux-64_conda.lock | 53 ++++----- 4 files changed, 88 insertions(+), 78 deletions(-) diff --git a/build_tools/github/doc_environment.yml b/build_tools/github/doc_environment.yml index f0a933e31552a..0e332269b68ca 100644 --- a/build_tools/github/doc_environment.yml +++ b/build_tools/github/doc_environment.yml @@ -25,6 +25,7 @@ dependencies: - sphinx-gallery - numpydoc - sphinx-prompt + - plotly - pip - pip: - sphinxext-opengraph diff --git a/build_tools/github/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock index 0ad634faa86c5..16a86e01244d4 100644 --- a/build_tools/github/doc_linux-64_conda.lock +++ b/build_tools/github/doc_linux-64_conda.lock @@ -1,9 +1,9 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 1b1e977a1b5dcedea55d0a8b53d501d1c1211b70a4419ec48dafe1b2658b4ef8 +# input_hash: 51824060cd657aa08f97c645d9c3c1efd6eec66aedaf8949d8d7cb5d9d8e69e6 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb @@ -25,7 +25,7 @@ https://conda.anaconda.org/conda-forge/linux-64/binutils-2.36.1-hdd6e379_2.tar.b https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.36-hf3e587d_10.tar.bz2#9d5cdbfe24b182d4c749b86d500ac9d2 https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c -https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.6.1-h7f98852_0.tar.bz2#0347ce6a34f8b55b544b141432c6d4c7 https://conda.anaconda.org/conda-forge/linux-64/aom-3.3.0-h27087fc_1.tar.bz2#fe863d1e92331e69c8f231df5eaf5e16 https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_0.tar.bz2#ec47e97c8e0b27dcadbebc4d17764548 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 @@ -35,16 +35,14 @@ https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 -https://conda.anaconda.org/conda-forge/linux-64/json-c-0.15-h98cffda_0.tar.bz2#f32d45a88e7462be446824654dbcf4a4 https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-h7f98852_2.tar.bz2#8e787b08fe19986d99d034b839df2961 https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libaec-1.0.6-h9c3ff4c_0.tar.bz2#c77f5e4e418fa47d699d6afa54c5d444 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2#3f3258d8f841fbac63b36b75bdac1afd -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 @@ -54,14 +52,15 @@ https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-10.3.0-h26c7422_16.tar.bz2#4076c395c7fa53cd708949e4be48154e https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee +https://conda.anaconda.org/conda-forge/linux-64/libudev1-249-h166bdaf_4.tar.bz2#dc075ff6fcb46b3d3c7652e543d5f334 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.9-hbd366e4_1.tar.bz2#418adb239781d9690afc6b1a05514c37 @@ -74,21 +73,22 @@ https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.0.6-h166bdaf_0.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#a340c8ce9e702836e999984fcabd1b6e https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 https://conda.anaconda.org/conda-forge/linux-64/libavif-0.10.1-h166bdaf_0.tar.bz2#eb9a725cb66435aaf81f13ce585a64eb -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_openblas.tar.bz2#04eb983975a1be3e57d6d667414cd774 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f -https://conda.anaconda.org/conda-forge/linux-64/libcap-2.51-h166bdaf_1.tar.bz2#875e5931fb2faa6dacb4c13672630ae3 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.64-ha37c62d_0.tar.bz2#5896fbd58d0376df8556a4aba1ce4f71 https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 -https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.3-he0ac6c6_0.tar.bz2#8ab9f9c0fc641b53c5f87368e41af18d +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-he0ac6c6_0.tar.bz2#f5759f0c80708fbf9c4836c0cb46d0fe https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_1.tar.bz2#c01640c8bad562720d6caff0402dbd96 https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h57a0ea0_5.tar.bz2#5469312a373f481c05c380897fd7c923 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.1-h83bc5f7_3.tar.bz2#37baca23e60af4130cfc03e8ab9f8e22 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e @@ -98,61 +98,66 @@ https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-10.3.0-hc39de41_10. https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-10.3.0-h73f4979_16.tar.bz2#0407b066da49b4562ce054c06b40558c https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#f825336ce3d4dba77ffd1edc78e7abf9 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.3-default_h3a83d3e_0.tar.bz2#1a571eb098b894a66642cd8b638f5f1d +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.6-default_h3a83d3e_0.tar.bz2#cdbd49e0ab5c5a6c522acb8271977d4c https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-h727a467_0.tar.bz2#a22567abfea169ff8048506b1ca9b230 https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.0-h4ff8645_0.tar.bz2#ead30581ba8cfd52d69632868b844d4a +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h166bdaf_0.tar.bz2#0a8e20a8aef954390b9481a527421a8c https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.4.2-h166bdaf_0.tar.bz2#d3a922efc75c5f2534372eead96d46be https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa https://conda.anaconda.org/conda-forge/linux-64/gfortran-10.3.0-h18518b4_10.tar.bz2#794676d0d7dd69998cb12654cf37f43d https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-10.3.0-hb09a455_10.tar.bz2#dd9058b625a6edce185db90cf99e3590 -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 https://conda.anaconda.org/conda-forge/linux-64/gxx-10.3.0-he2824d0_10.tar.bz2#121c9d19ecb6cf6e587c2ab8dfb5c73c https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-10.3.0-h2593f52_10.tar.bz2#075de70ba0493c56ed9e9cda930978ce https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.3-default_h2e3cab8_0.tar.bz2#2343b7c11c031c5415b28641eb81275d +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.6-default_h2e3cab8_0.tar.bz2#eb70548da697e50cefa7ba939d57d001 https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.83.1-h7bff187_0.tar.bz2#d0c278476dba3b29ee13203784672ab1 -https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-hd77ab85_0.tar.bz2#13980beea7c55e6b68db1349f25bd454 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_openblas.tar.bz2#31f21773a784f59962ea542a3d71ad87 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-hd77ab85_0.tar.bz2#7024df220bd8680192d4bad4024122d1 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 -https://conda.anaconda.org/conda-forge/linux-64/python-3.9.12-h9a8a25e_1_cpython.tar.bz2#06dadf5df9d340439c2aa32e15099d31 +https://conda.anaconda.org/conda-forge/linux-64/python-3.9.13-h9a8a25e_0_cpython.tar.bz2#69bc307cc4d7396c5fccb26bbcc9c379 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h166bdaf_0.tar.bz2#c9b568bd804cb2903c6be6f5f68182e4 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_openblas.tar.bz2#2b5095be485bdb407ff3134358c3ca9c https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.1.0-hd9d235c_0.tar.bz2#ebc04a148d7204bb428f8633b89fd3dd https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.4.2-h924138e_0.tar.bz2#40b38afc72b4f12be8a2ca29853b03ac https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.4.2-h2a4ca65_0.tar.bz2#a39c981deb5b50e2ea1464ab9d5c0b10 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.5.0-pyhd8ed1ab_0.tar.bz2#db4ffc615663c66a9cc0869ce4d1092b -https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 -https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-hfd4fe87_1001.tar.bz2#a44a1d690250f6bbb01b7e328ea0c719 +https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-h8c3723f_1002.tar.bz2#7b3f287fcb7683f67b3d953b79f412ea https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 -https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.2-pyhd8ed1ab_0.tar.bz2#fa13a75da1377a7a5a5df3299aea6893 +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.4-pyhd8ed1ab_0.tar.bz2#d5ee17f3f60079d79fbd027f9944d18e https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -166,71 +171,75 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.0-pyhd8 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.0.1-pyhd8ed1ab_0.tar.bz2#8b29b2c12cb21dbd057755e5fd22d005 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c -https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 -https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py39hf3d152e_0.tar.bz2#c6f766c4abf9207215c610187e61381a +https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda +https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-openblas.tar.bz2#ca9e177657aa07ab306bd1bbcdf80e69 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py39hf3d152e_0.tar.bz2#cf0efee4ef53a6d3ea4dce06ac360f14 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py39h4bc2ebd_0.tar.bz2#f6191bf565dee581e77549d63737751c https://conda.anaconda.org/conda-forge/linux-64/compilers-1.4.2-ha770c72_0.tar.bz2#b353fa1271e1a82d37a7d35f4785de13 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py39h5a03fae_0.tar.bz2#78d64530b059de26a60f979e02c9fa3c https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py39hb9d737c_2.tar.bz2#27e20d4d5b494d2f1f3fa31fa44190ae -https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py39hf3d152e_2.tar.bz2#fea5dea40592ea943aa56f4935308ee4 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py39hf3d152e_1.tar.bz2#9851752658704495f8adf28f6d2b3cb3 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py39hf3d152e_0.tar.bz2#4c2a0eabf0b8980b2c755646a6f750eb -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py39hf939315_1.tar.bz2#93232e4148e28b2665c16e573747a874 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py39hf939315_0.tar.bz2#d8bdd7cb2f0e571665bbf0ec09c94da9 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py39hb9d737c_1.tar.bz2#7cda413e43b252044a270c2477031c5c -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py39hc58783e_0.tar.bz2#a09094871a38a0abec011ec36e742045 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py39hba7629e_0.tar.bz2#0e48a6f61637735a88644359d90f5f1e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_0.tar.bz2#795b91dbac91f606bd0abc466bdef572 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_1.tar.bz2#9039c6b86ddb65d7e8bf464337ae9053 +https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py39hb9d737c_0.tar.bz2#5852c69cad74811dc3c95f9ab6a184ef -https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-hb166930_4.tar.bz2#7c165f1b39385b9fee1f279005ee512e +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_5.tar.bz2#d34b97a2386932b97c7cb80916a673e7 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py39hb9d737c_4.tar.bz2#dcc47a3b751508507183d17e569805e5 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py39hf3d152e_0.tar.bz2#3f81b2509daf345842e7a243f5b86ece +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py39hf3d152e_0.tar.bz2#ddfb37b6e91b8c41be3976d19af47ade https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py39hb9d737c_3.tar.bz2#5e13a2d214ed4184969df363a1aab420 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py39hb9d737c_1.tar.bz2#ef84376736d1e8a814ccb06d1d814e6f https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39hb9d737c_1004.tar.bz2#05a99367d885ec9990f25e74128a8a08 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py39hd97740a_0.tar.bz2#11780968ae65fdeb1a0bc294d211597d -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.1-pyhd8ed1ab_0.tar.bz2#8aaa4107e044e68c8d8af030b9c171f6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py39hb9d737c_0.tar.bz2#43f3c538bbcf6ed0da225891e11bf0a8 -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39h9c0c3a3_5.tar.bz2#e0d91afa9019bca0484bddb1626b7035 -https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39hfcd4fa2_6.tar.bz2#fb284401002dea344eada09798cd07ec +https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.3-pyhcf75d05_0.tar.bz2#9a5e536d761271c400310ec5dff8c5e1 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 -https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py39h1832856_1.tar.bz2#264505bcd299b8d564195cfb3e6038f0 -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py39h1832856_0.tar.bz2#74e00961703972cf33b44a6fca7c3d51 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py39hf3d152e_0.tar.bz2#a6bcf633d12aabdfc4cb32a09ebc0f31 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.3.0-py39hd257fcd_1.tar.bz2#c4b698994b2d8d2e659ae02202e6abe4 -https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.3-hf97cb25_1.tar.bz2#79853477ea006ccccb7a39c2d33f51b9 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py39he49c0e8_0.tar.bz2#b1b4cc4216e555168e88d6a2b1914af1 https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py39he80948d_2.tar.bz2#e93686e0252282dd8ccba5c6cbcd8295 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py39h700656a_0.tar.bz2#ab1bcd0fd24e375f16d662e4cc783cab https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.2-pyhd8ed1ab_0.tar.bz2#2e4e8be763551f60bbfcc22b650e5d49 https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py39hac2352c_0.tar.bz2#9df63dea0e4d2163be63b8e40c17ceaf https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py39h5a03fae_0.tar.bz2#772c3115b4e857f3fd2051435f04f68d +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py39h5a03fae_1.tar.bz2#bff0f5f688af0dc337d11517c5a46402 https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.4-ha5833f6_2.tar.bz2#dd3aa6715b9e9efaf842febf18ce4261 https://conda.anaconda.org/conda-forge/noarch/tifffile-2022.5.4-pyhd8ed1ab_0.tar.bz2#8c8c68b9d466b8804584abe11a75c396 -https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py39h5a03fae_0.tar.bz2#af520e0af4a0772f90f9ec79ca91f603 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py39h18e9c17_1.tar.bz2#111647767bc84d4795f829bdc07dbb27 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e -https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.2-py39hde0f152_0.tar.bz2#200ceba1a31bf22629232285a550506f +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py39h1832856_0.tar.bz2#5d638481c48c57fdb986490a4a6983fc https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed -https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hce5d2b2_0.tar.bz2#0d4a4a2f2e52548519a76262839494c9 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hd257fcd_0.tar.bz2#bd7cdadf70e34a19333c3aacc40206e8 https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py39hf3d152e_0.tar.bz2#d65d073d186977a2a9a9d5a68b2b77ef -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 -https://conda.anaconda.org/conda-forge/noarch/sphinx-4.5.0-pyh6c4a22f_0.tar.bz2#46b38d88c4270ff9ba78a89c83c66345 -https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.3.1-pyhd8ed1ab_0.tar.bz2#31b43675aa1bb68e049c2f65c15da864 +https://conda.anaconda.org/conda-forge/noarch/sphinx-5.0.2-pyh6c4a22f_0.tar.bz2#d4eaa1f50733a377480ce1d5aac556c7 +https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.4.0-pyhd8ed1ab_0.tar.bz2#d1c1320c63843ca639a638cb4259e346 https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.10.1-pyhd8ed1ab_0.tar.bz2#4918585fe5e5341740f7e63c61743efb https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.4.0-pyhd8ed1ab_0.tar.bz2#88ee91e8679603f2a5bd036d52919cc2 # pip sphinxext-opengraph @ https://files.pythonhosted.org/packages/58/ed/59df64b8400caf736f38bd3725ab9b1d9e50874f629980973aea090c1a8b/sphinxext_opengraph-0.6.3-py3-none-any.whl#md5=None diff --git a/build_tools/github/doc_min_dependencies_environment.yml b/build_tools/github/doc_min_dependencies_environment.yml index 9f20b9e900336..d1c5c4f2053e2 100644 --- a/build_tools/github/doc_min_dependencies_environment.yml +++ b/build_tools/github/doc_min_dependencies_environment.yml @@ -25,6 +25,7 @@ dependencies: - sphinx-gallery=0.7.0 # min - numpydoc=1.2.0 # min - sphinx-prompt=1.3.0 # min + - plotly=5.9.0 # min - pip - pip: - sphinxext-opengraph==0.4.2 # min diff --git a/build_tools/github/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock index 3c3a948784955..70a7bacddcd6e 100644 --- a/build_tools/github/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/github/doc_min_dependencies_linux-64_conda.lock @@ -1,14 +1,12 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: a6aaffac15d19e8ed6fc40eddb398e18e9252fb737bf8c60f99f93e7d41ac5ce +# input_hash: 53d568af487a4ac9a260bfa1bcd5263594b6a4aef53e17e7ccf17e2e2165ab96 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_15.tar.bz2#5dd5127afd710f91f6a75821bac0a4f0 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee -https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-7.5.0-hda03d7c_20.tar.bz2#2146b25eb2a762a44fab709338a7b6d9 https://conda.anaconda.org/conda-forge/linux-64/libgfortran4-7.5.0-h14aa051_20.tar.bz2#a072eab836c3a9578ce72b5640ce592d -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-7.5.0-hb016644_20.tar.bz2#31d5500f621954679ee41d7f5d1089fb https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-7.5.0-h14aa051_20.tar.bz2#c3b2ad091c043c08689e64b10741484b https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2#f013cf7749536ce43d82afbffdf499ab @@ -19,23 +17,22 @@ https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.36-hf3e587d_ https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 -https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-7.5.0-habd7529_20.tar.bz2#42140612518a7ce78f571d64b6a50ba3 +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-7.5.0-hda68d29_13.tar.bz2#fe83fa08b9fe7ceccfd0068571b92827 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2#8e881214a23508f1541eb7a3135d6fcb -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 https://conda.anaconda.org/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-0.10.0-he1b5a44_0.tar.bz2#78ccac2098edcd3673af2ceb3e95f932 -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 @@ -45,13 +42,13 @@ https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4c https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-7.5.0-h47867f9_33.tar.bz2#3a31c3f430a31184a5d07e67d3b24e2c https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-hf34092f_1004.tar.bz2#5582e1349bee4a25705adca745bf6845 https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-7.5.0-h56cb351_20.tar.bz2#8f897b30195bd3a2251b4c51c3cc91cf -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-7.5.0-hd0bb8aa_20.tar.bz2#dbe78fc5fb9c339f8e55426559e12f7b +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-7.5.0-h64c220c_13.tar.bz2#4000478f05b985c952ad8e100d1c13fd https://conda.anaconda.org/conda-forge/linux-64/libllvm9-9.0.1-default_hc23dcda_7.tar.bz2#9f4686a2c319355fe8636ca13783c3b4 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.1.1-h516909a_0.tar.bz2#d98aa4948ec35f52907e2d6152e2b255 https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-7.5.0-h78c8a43_33.tar.bz2#b2879010fb369f4012040f7a27657cd8 @@ -59,10 +56,10 @@ https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-7.5.0-h555fc39_33.t https://conda.anaconda.org/conda-forge/linux-64/libclang-9.0.1-default_hb4e5071_5.tar.bz2#9dde69aa2a8ecd575a16e44987bdc9f7 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2#d5a09a9e981849b751cb75656b7302a0 https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733 https://conda.anaconda.org/conda-forge/linux-64/mkl-2020.4-h726a3e6_304.tar.bz2#b9b35a50e5377b19da6ec0709ae77fc3 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.0-h4ff8645_0.tar.bz2#ead30581ba8cfd52d69632868b844d4a https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.1.1-hc9558a2_0.tar.bz2#1eb7c67eb11eab0c98a87f84174fdde1 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.1.1-he991be0_0.tar.bz2#e38ac82cc517b9e245c1ae99f9f140da https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa @@ -76,7 +73,7 @@ https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/linux-64/compilers-1.1.1-0.tar.bz2#1ba267e19dbaf3db9dd0404e6fb9cdb9 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 @@ -89,7 +86,7 @@ https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.8.0-20_mkl.tar.bz2#14b25490fdcc44e879ac6c10fe764f68 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.8.0-20_mkl.tar.bz2#52c0ae3606eeae7e1d493f37f336f4f5 https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 -https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.2-pyhd8ed1ab_0.tar.bz2#fa13a75da1377a7a5a5df3299aea6893 +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.4-pyhd8ed1ab_0.tar.bz2#d5ee17f3f60079d79fbd027f9944d18e https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -103,25 +100,27 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.0-pyhd8 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.0.1-pyhd8ed1ab_0.tar.bz2#8b29b2c12cb21dbd057755e5fd22d005 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 -https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py38h578d9bd_0.tar.bz2#429a49d95358a078211aad97c4fc286c +https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py38h578d9bd_0.tar.bz2#1f4339b25d1030cfbf4ee0b06690bbce https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.4-py38ha312104_0.tar.bz2#8f82b87522fbb1d4b24e8b5e2b1d0501 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.24-py38h709712a_1.tar.bz2#9e5fe389471a13ae523ae980de4ad1f4 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h0a891b7_2.tar.bz2#71f54bf65927270177d66e26664f11ea https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2#4caaca6356992ee545080c7d7193b5a3 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py38h578d9bd_2.tar.bz2#affd6b87adb2b0c98da0e3ad274349be https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2#00084ab2657be5bf0ba0757ccde797ef -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py38h43d8883_1.tar.bz2#34c284cb94bd8c5118ccfe6d6fc3dd3f +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py38h43d8883_0.tar.bz2#0719de23a2c5aa0b4db25ee34394e8f3 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.8.0-20_mkl.tar.bz2#8274dc30518af9df1de47f5d9e73165c -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h497a2fe_3.tar.bz2#d51cdb48d2792a63174c0ee66a602e7e +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h0a891b7_4.tar.bz2#d182e0c60439427453ed4a7abd28ef0d https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar.bz2#bc0cbf611fe2f86eab29b98e51404f5e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_0.tar.bz2#b2135f7c9f4ba2ef94666946c8238d03 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_1.tar.bz2#cd653a4a951ca80adb96ff6cd3b36883 +https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py38h0a891b7_0.tar.bz2#e3908bd184030e7f4a3d837959ebf6d7 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 @@ -132,15 +131,15 @@ https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.b https://conda.anaconda.org/conda-forge/linux-64/blas-2.20-mkl.tar.bz2#e7d09a07f5413e53dca5282b8fa50bed https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1004.tar.bz2#9fcaaca218dcfeb8da806d4fd4824aa0 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py38h2b5fc30_0.tar.bz2#bcc387154aae535f8b4f84822621b5f7 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.1-pyhd8ed1ab_0.tar.bz2#8aaa4107e044e68c8d8af030b9c171f6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311 -https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c -https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_1.tar.bz2#d32c1aa8047d2d11163abbe4a8f852ac +https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.3-pyhcf75d05_0.tar.bz2#9a5e536d761271c400310ec5dff8c5e1 +https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2#bdedf6199eec03402a0c5db1f25e891e https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.1.2-py38h250f245_1.tar.bz2#0ae46309d21c964547792bac48162fc8 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py38h578d9bd_0.tar.bz2#626d2b8f96c8c3d20198e6bd84d1cfb7 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 @@ -157,7 +156,7 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.ta https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.12.2-py38h5c078b8_0.tar.bz2#33787719ad03d33cffc4e2e3ea82bc9e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.2-py38_1.tar.bz2#c2b9671a19c01716c37fe0a0e18b0aec -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 https://conda.anaconda.org/conda-forge/noarch/sphinx-4.0.1-pyh6c4a22f_2.tar.bz2#c203dcc46f262853ecbb9552c50d664e https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.2-pyhd8ed1ab_0.tar.bz2#025ad7ca2c7f65007ab6b6f5d93a56eb From 999c7c3d256a380ab1c54190c6ee9c7ab2734928 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 28 Jun 2022 15:21:50 +0200 Subject: [PATCH 15/43] Fix plotly figure --- .../plot_grid_search_text_feature_extraction.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index fa3604617b67d..8f3caeeba42d0 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -118,6 +118,9 @@ import pandas as pd import plotly.express as px +import plotly.io as pio + +pio.renderers.default = "sphinx_gallery" def shorten_param(param_name): @@ -142,7 +145,7 @@ def shorten_param(param_name): color="mean_test_score", color_continuous_scale=px.colors.sequential.Jet, ) -fig.show() +fig # %% # The parallel coordinates plot displays the values of the hyperparameters on From ce37d607352cc58a3cf3eac19aa07d06ffeb61f4 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Tue, 28 Jun 2022 18:21:41 +0200 Subject: [PATCH 16/43] Apply suggestions from code review Co-authored-by: Olivier Grisel --- .../plot_grid_search_text_feature_extraction.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 8f3caeeba42d0..e466a1bae6843 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -72,7 +72,9 @@ ("clf", ComplementNB()), ] ) +pipeline +# %% parameters = { "vect__max_df": (0.5, 0.75, 1.0), "vect__min_df": (1, 3, 5), @@ -90,11 +92,10 @@ from sklearn.model_selection import GridSearchCV grid_search = GridSearchCV( - estimator=pipeline, param_grid=parameters, n_jobs=-1, verbose=1 + estimator=pipeline, param_grid=parameters, n_jobs=2, verbose=1 ) print("Performing grid search...") -print("pipeline:", [name for name, _ in pipeline.steps]) print("parameters:") pprint(parameters) t0 = time() @@ -107,7 +108,10 @@ print(f"{param_name}: {best_parameters[param_name]}") accuracy = grid_search.score(data_test.data, data_test.target) -print(f"Best accuracy on the grid search: {grid_search.best_score_:.3f}") +print( + "Accuracy of the best parameters using the inner CV of " + f"the grid search: {grid_search.best_score_:.3f}" +) print(f"Accuracy on test set: {accuracy:.3f}") # %% From 02975f162542f790f80882bfeb676bfffc1f608a Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 10:18:45 +0200 Subject: [PATCH 17/43] Move config of the default renderer of plotly to conf.py --- doc/conf.py | 11 +++++++++++ .../plot_grid_search_text_feature_extraction.py | 5 +---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index b4c944a928c3c..24b47d49b9a75 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -29,6 +29,17 @@ import sphinx_gallery from sphinx_gallery.sorting import ExampleTitleSortKey +try: + # Configure plotly to integrate its output into the HTML pages generated by + # sphinx-gallery. + import plotly.io as pio + + pio.renderers.default = "sphinx_gallery" +except ImportError: + # Make it possible to render the doc when not running the examples + # that need plotly. + pass + # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index e466a1bae6843..0e8e5d6b635bd 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -122,9 +122,6 @@ import pandas as pd import plotly.express as px -import plotly.io as pio - -pio.renderers.default = "sphinx_gallery" def shorten_param(param_name): @@ -134,7 +131,7 @@ def shorten_param(param_name): cv_results = pd.DataFrame(grid_search.cv_results_) -# monograms are mapped to index 1 and bigrams to index 2 +# unigrams are mapped to index 1 and bigrams to index 2 cv_results["param_vect__ngram_range"] = cv_results["param_vect__ngram_range"].apply( lambda x: x[1] ) From 01910dd31c5504c98b934a8b63e64103a87ce534 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 11:27:47 +0200 Subject: [PATCH 18/43] Change grid search for randomized search --- ...lot_grid_search_text_feature_extraction.py | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 0e8e5d6b635bd..94e0303e37828 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -75,13 +75,16 @@ pipeline # %% +import numpy as np + parameters = { "vect__max_df": (0.5, 0.75, 1.0), "vect__min_df": (1, 3, 5), # 'vect__max_features': (None, 5000, 10000, 50000), "vect__ngram_range": ((1, 1), (1, 2)), # unigrams or bigrams # 'vect__norm': ('l1', 'l2'), - "clf__alpha": (0.01, 0.1), + "clf__alpha": np.logspace(-2.5, -1, 20), + # (0.01, 0.1), } # %% @@ -89,10 +92,15 @@ from pprint import pprint from time import time -from sklearn.model_selection import GridSearchCV - -grid_search = GridSearchCV( - estimator=pipeline, param_grid=parameters, n_jobs=2, verbose=1 +from sklearn.model_selection import RandomizedSearchCV + +grid_search = RandomizedSearchCV( + estimator=pipeline, + param_distributions=parameters, + n_iter=40, + random_state=0, + n_jobs=2, + verbose=1, ) print("Performing grid search...") @@ -160,9 +168,9 @@ def shorten_param(param_name): # selection by clicking once again on the same axis. # # In particular for this hyperparameter search, it is interesting to notice that -# the top performing models (dark red lines with mean test score > 0.82) are -# reached when `min_df=1` and `alpha=0.01`, regardless of the value of -# `max_df` and the `ngram_range`. +# the top performing models (mean test score > 0.82) are reached when `min_df=1` +# and `alpha` is close to 0.01, regardless of the values of `max_df` and +# `ngram_range`. # %% column_results += ["std_test_score"] @@ -177,6 +185,6 @@ def shorten_param(param_name): # By a manual inspection of the results, one can notice that the top performing # models overlap within one standard deviation of their test score, showing that # `max_df` and `ngram_range` are indeed not meaningful parameters in this -# particular case. For more information on how to customize a -# :class:`~sklearn.model_selection.GridSearchCV`, see the example notebook +# particular case. For more information on how to customize an automated tuning, +# see the example notebook # :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. From 675315e65951c74ded2f4fe2413c146d08f24664 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 11:53:46 +0200 Subject: [PATCH 19/43] Split code cells for easier reading --- .../plot_grid_search_text_feature_extraction.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 94e0303e37828..7931cbdf7ab40 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -91,7 +91,6 @@ # Find the best parameters for both the feature extraction and the classifier. from pprint import pprint -from time import time from sklearn.model_selection import RandomizedSearchCV grid_search = RandomizedSearchCV( @@ -106,21 +105,27 @@ print("Performing grid search...") print("parameters:") pprint(parameters) + +# %% +from time import time + t0 = time() grid_search.fit(data_train.data, data_train.target) print(f"done in {time() - t0:.3f}s") -print() + +# %% print("Best parameters set:") best_parameters = grid_search.best_estimator_.get_params() for param_name in sorted(parameters.keys()): print(f"{param_name}: {best_parameters[param_name]}") -accuracy = grid_search.score(data_test.data, data_test.target) +# %% +test_accuracy = grid_search.score(data_test.data, data_test.target) print( "Accuracy of the best parameters using the inner CV of " f"the grid search: {grid_search.best_score_:.3f}" ) -print(f"Accuracy on test set: {accuracy:.3f}") +print(f"Accuracy on test set: {test_accuracy:.3f}") # %% # Finally, we use a `plotly.express.parallel_coordinates From 72452af4b86ffd22e91e9cb35c767f6ef353781a Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 11:57:33 +0200 Subject: [PATCH 20/43] Wording tweak --- .../plot_grid_search_text_feature_extraction.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 7931cbdf7ab40..985b4bb311a62 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -88,7 +88,8 @@ } # %% -# Find the best parameters for both the feature extraction and the classifier. +# We search for the best parameters for both the feature extraction and the +# classifier. from pprint import pprint from sklearn.model_selection import RandomizedSearchCV From 59d501d66212d13df2d99a5f3d967ed762bf8902 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 12:02:15 +0200 Subject: [PATCH 21/43] Reset pandas index --- .../model_selection/plot_grid_search_text_feature_extraction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 985b4bb311a62..10f3c51b85d5c 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -185,7 +185,7 @@ def shorten_param(param_name): .rename(shorten_param, axis=1) .sort_values("mean_test_score", ascending=False) ) -cv_results +cv_results.reset_index(drop=True) # %% # By a manual inspection of the results, one can notice that the top performing From ec8e5443ee97c329b2dc83bcfb7c513af9f02962 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 12:11:36 +0200 Subject: [PATCH 22/43] improve narrative --- .../plot_grid_search_text_feature_extraction.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 10f3c51b85d5c..d79bea917d4b1 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -177,8 +177,11 @@ def shorten_param(param_name): # the top performing models (mean test score > 0.82) are reached when `min_df=1` # and `alpha` is close to 0.01, regardless of the values of `max_df` and # `ngram_range`. +# +# The parallel coordinates plot does not provide information on the variability +# of the score accross the different folds of the cross-validation. For such +# purpose we can further inspect the `cv_results` as follows: -# %% column_results += ["std_test_score"] cv_results = ( cv_results[column_results] From 3add47210035f4c2ad02570711e00eb9a2f2b938 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 16:40:26 +0200 Subject: [PATCH 23/43] Add plotly scatterplot and related narrative --- ...lot_grid_search_text_feature_extraction.py | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index d79bea917d4b1..eb40295de1d18 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -129,13 +129,12 @@ print(f"Accuracy on test set: {test_accuracy:.3f}") # %% -# Finally, we use a `plotly.express.parallel_coordinates -# `_ -# to visualize the results from the -# :class:`~sklearn.model_selection.GridSearchCV`. +# The prefixes `vect` and `clf` are required to avoid possible ambiguities in +# the pipeline, but are not necessary for visualizing the results. Because of +# this, we define a function that will rename the tuned hyperparameters and +# improve the readability. import pandas as pd -import plotly.express as px def shorten_param(param_name): @@ -145,18 +144,42 @@ def shorten_param(param_name): cv_results = pd.DataFrame(grid_search.cv_results_) +cv_results = cv_results.rename(shorten_param, axis=1) # unigrams are mapped to index 1 and bigrams to index 2 -cv_results["param_vect__ngram_range"] = cv_results["param_vect__ngram_range"].apply( - lambda x: x[1] +cv_results["ngram_range"] = cv_results["ngram_range"].apply(lambda x: x[1]) + +# %% +# We can use a `plotly.express.scatter +# `_ +# to visualize the trade-off between scoring time and mean test score. Passing +# the cursor over a given point displays the corresponding parameters. + +import plotly.express as px + +param_names = [shorten_param(name) for name in parameters.keys()] +fig = px.scatter( + cv_results, x="mean_score_time", y="mean_test_score", hover_data=param_names ) +fig -column_results = [f"param_{name}" for name in parameters.keys()] -column_results += ["mean_test_score"] +# %% +# Notice that the cluster of models in the upper-left corner of the plot are the +# most optimal in terms of accuracy and scoring time. For more information on +# how to customize an automated tuning to maximize score and minimize scoring +# time, see the example notebook +# :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. +# +# We can also use a `plotly.express.parallel_coordinates +# `_ +# to further visualize the mean test score as a function of the tuned +# hyperparameters. This helps finding interactions between (more than two) +# hyperparameters and provide an intuition on the relevance they have for +# maximizing the performance of a pipeline. + +column_results = param_names + ["mean_test_score"] fig = px.parallel_coordinates( - cv_results[column_results] - .rename(shorten_param, axis=1) - .apply(dict.fromkeys(map(shorten_param, column_results), lambda x: x)), + cv_results[column_results].apply(dict.fromkeys(column_results, lambda x: x)), color="mean_test_score", color_continuous_scale=px.colors.sequential.Jet, ) @@ -164,14 +187,11 @@ def shorten_param(param_name): # %% # The parallel coordinates plot displays the values of the hyperparameters on -# different columns while the performance metric is color coded. It allows us to -# quickly inspect the combinations of hyperparameters that maximize the -# performance. -# -# It is possible to select a range of results by clicking and holding on any -# axis of the parallel coordinate plot. You can then slide (move) the range -# selection and cross two selections to see the intersections. You can undo a -# selection by clicking once again on the same axis. +# different columns while the performance metric is color coded. It is possible +# to select a range of results by clicking and holding on any axis of the +# parallel coordinate plot. You can then slide (move) the range selection and +# cross two selections to see the intersections. You can undo a selection by +# clicking once again on the same axis. # # In particular for this hyperparameter search, it is interesting to notice that # the top performing models (mean test score > 0.82) are reached when `min_df=1` @@ -194,6 +214,4 @@ def shorten_param(param_name): # By a manual inspection of the results, one can notice that the top performing # models overlap within one standard deviation of their test score, showing that # `max_df` and `ngram_range` are indeed not meaningful parameters in this -# particular case. For more information on how to customize an automated tuning, -# see the example notebook -# :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. +# particular case. From 6842945f11254d525fdf6c261a1b29770c48f6b6 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 16:40:42 +0200 Subject: [PATCH 24/43] Add author --- .../model_selection/plot_grid_search_text_feature_extraction.py | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index eb40295de1d18..269dbdeddb8ac 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -18,6 +18,7 @@ # Author: Olivier Grisel # Peter Prettenhofer # Mathieu Blondel +# Arturo Amor # License: BSD 3 clause # %% From ef7657b89bd744d595f7d61dd57018b7bd6e4fc3 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 29 Jun 2022 16:47:44 +0200 Subject: [PATCH 25/43] Add interpretation to scatterplot --- .../plot_grid_search_text_feature_extraction.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 269dbdeddb8ac..829abdea09617 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -165,9 +165,12 @@ def shorten_param(param_name): # %% # Notice that the cluster of models in the upper-left corner of the plot are the -# most optimal in terms of accuracy and scoring time. For more information on -# how to customize an automated tuning to maximize score and minimize scoring -# time, see the example notebook +# most optimal in terms of accuracy and scoring time. In this case, using +# bigrams increases the required scoring time without improving considerably the +# accuracy of the pipeline. +# +# For more information on how to customize an automated tuning to maximize score +# and minimize scoring time, see the example notebook # :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. # # We can also use a `plotly.express.parallel_coordinates From 43d0d49673f0e9d67e914e88eab670dc2411f2f5 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Mon, 4 Jul 2022 18:44:52 +0200 Subject: [PATCH 26/43] Remove max_features and improve narrative --- ...lot_grid_search_text_feature_extraction.py | 103 +++++++++--------- 1 file changed, 53 insertions(+), 50 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 829abdea09617..80830f643e424 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -8,8 +8,8 @@ classification example. In this example we tune the hyperparameters of a particular classifier using a -:class:`~sklearn.model_selection.GridSearchCV`. For a demo on the performance of -some other classifiers, see the +:class:`~sklearn.model_selection.RandomizedSearchCV`. For a demo on the +performance of some other classifiers, see the :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` notebook. @@ -25,8 +25,8 @@ # Data loading # ------------ # We load two categories from the training set. You can adjust the number of -# categories by giving their names to the dataset loader or setting them to None -# to get the 20 of them. +# categories by giving their names to the dataset loader or setting them to +# `None` to get the 20 of them. from sklearn.datasets import fetch_20newsgroups @@ -59,9 +59,7 @@ # Pipeline with hyperparameter tuning # ----------------------------------- # We define a pipeline combining a text feature vectorizer with a simple -# classifier. We also define a set of parameters to use for grid search. -# Uncommenting more parameters will give better exploring power but will -# increase processing time in a combinatorial way. +# classifier. We also define a set of parameters to use for random search. from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import ComplementNB @@ -79,13 +77,11 @@ import numpy as np parameters = { - "vect__max_df": (0.5, 0.75, 1.0), - "vect__min_df": (1, 3, 5), - # 'vect__max_features': (None, 5000, 10000, 50000), + "vect__max_df": (0.2, 0.4, 0.6, 0.8, 1.0), + "vect__min_df": (1, 3, 5, 10), "vect__ngram_range": ((1, 1), (1, 2)), # unigrams or bigrams - # 'vect__norm': ('l1', 'l2'), - "clf__alpha": np.logspace(-2.5, -1, 20), - # (0.01, 0.1), + "vect__norm": ("l1", "l2"), + "clf__alpha": np.logspace(-6, 6, 13), } # %% @@ -95,7 +91,7 @@ from pprint import pprint from sklearn.model_selection import RandomizedSearchCV -grid_search = RandomizedSearchCV( +random_search = RandomizedSearchCV( estimator=pipeline, param_distributions=parameters, n_iter=40, @@ -112,20 +108,20 @@ from time import time t0 = time() -grid_search.fit(data_train.data, data_train.target) +random_search.fit(data_train.data, data_train.target) print(f"done in {time() - t0:.3f}s") # %% print("Best parameters set:") -best_parameters = grid_search.best_estimator_.get_params() +best_parameters = random_search.best_estimator_.get_params() for param_name in sorted(parameters.keys()): print(f"{param_name}: {best_parameters[param_name]}") # %% -test_accuracy = grid_search.score(data_test.data, data_test.target) +test_accuracy = random_search.score(data_test.data, data_test.target) print( "Accuracy of the best parameters using the inner CV of " - f"the grid search: {grid_search.best_score_:.3f}" + f"the random search: {random_search.best_score_:.3f}" ) print(f"Accuracy on test set: {test_accuracy:.3f}") @@ -144,7 +140,7 @@ def shorten_param(param_name): return param_name -cv_results = pd.DataFrame(grid_search.cv_results_) +cv_results = pd.DataFrame(random_search.cv_results_) cv_results = cv_results.rename(shorten_param, axis=1) # unigrams are mapped to index 1 and bigrams to index 2 cv_results["ngram_range"] = cv_results["ngram_range"].apply(lambda x: x[1]) @@ -158,34 +154,47 @@ def shorten_param(param_name): import plotly.express as px param_names = [shorten_param(name) for name in parameters.keys()] +labels = {"mean_score_time": "score time (s)", "mean_test_score": "CV score"} fig = px.scatter( - cv_results, x="mean_score_time", y="mean_test_score", hover_data=param_names + cv_results, + x="mean_score_time", + y="mean_test_score", + error_x="std_score_time", + error_y="std_test_score", + hover_data=param_names, + labels=labels, ) fig # %% -# Notice that the cluster of models in the upper-left corner of the plot are the -# most optimal in terms of accuracy and scoring time. In this case, using +# Notice that the cluster of models in the upper-left corner of the plot have +# the best trade-off between accuracy and scoring time. In this case, using # bigrams increases the required scoring time without improving considerably the -# accuracy of the pipeline. -# -# For more information on how to customize an automated tuning to maximize score -# and minimize scoring time, see the example notebook +# accuracy of the pipeline. For more information on how to customize an +# automated tuning to maximize score and minimize scoring time, see the example +# notebook # :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. # # We can also use a `plotly.express.parallel_coordinates # `_ # to further visualize the mean test score as a function of the tuned -# hyperparameters. This helps finding interactions between (more than two) +# hyperparameters. This helps finding interactions between more than two # hyperparameters and provide an intuition on the relevance they have for # maximizing the performance of a pipeline. -column_results = param_names + ["mean_test_score"] +import math + +column_results = param_names + ["mean_test_score", "mean_score_time"] + +transform_funcs = dict.fromkeys(column_results, lambda x: x) +transform_funcs["alpha"] = math.log10 +transform_funcs["norm"] = lambda x: 2 if x == "l2" else 1 fig = px.parallel_coordinates( - cv_results[column_results].apply(dict.fromkeys(column_results, lambda x: x)), + cv_results[column_results].apply(transform_funcs), color="mean_test_score", - color_continuous_scale=px.colors.sequential.Jet, + color_continuous_scale=px.colors.sequential.Viridis_r, + labels=labels, ) fig @@ -197,25 +206,19 @@ def shorten_param(param_name): # cross two selections to see the intersections. You can undo a selection by # clicking once again on the same axis. # +# .. note:: We applied a `math.log10` transformation on the `alpha` axis to +# spread the active range and improve the readability of the plot. A value +# :math:`x` on said axis is to be understood as :math:`10^x`. +# # In particular for this hyperparameter search, it is interesting to notice that -# the top performing models (mean test score > 0.82) are reached when `min_df=1` -# and `alpha` is close to 0.01, regardless of the values of `max_df` and -# `ngram_range`. +# the top performing models do not seem to depend on the regularization `norm`, +# but they do depend on a trade-off between `max_df`, `min_df` and the +# regularization strenght `alpha`. The reason is that including noisy features +# (i.e. `max_df` close to 1.0 or `min_df` close to 0) tend to overfit and +# therefore require a stronger regularization to compensate. Having less +# features require less regularization and less scoring time. # -# The parallel coordinates plot does not provide information on the variability -# of the score accross the different folds of the cross-validation. For such -# purpose we can further inspect the `cv_results` as follows: - -column_results += ["std_test_score"] -cv_results = ( - cv_results[column_results] - .rename(shorten_param, axis=1) - .sort_values("mean_test_score", ascending=False) -) -cv_results.reset_index(drop=True) - -# %% -# By a manual inspection of the results, one can notice that the top performing -# models overlap within one standard deviation of their test score, showing that -# `max_df` and `ngram_range` are indeed not meaningful parameters in this -# particular case. +# In practice it would be interesting to increase the parameter `n_iter` of the +# :class:`~sklearn.model_selection.RandomizedSearchCV` to get a more informative +# analysis. This requires more computing time and can be done increasing the +# number of CPUs of the machine and via increasing the `n_jobs` parameter. From bb8580592d59ff90f1609dad2757ff470d8d333d Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 5 Jul 2022 10:43:05 +0200 Subject: [PATCH 27/43] Add simil to GridSearchCV --- ...lot_grid_search_text_feature_extraction.py | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 80830f643e424..ca3f5222a7454 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -74,6 +74,15 @@ pipeline # %% +# We define a grid of hyperparameters to be explored by the +# :class:`~sklearn.model_selection.RandomizedSearchCV`. Using a +# :class:`~sklearn.model_selection.GridSearchCV` instead would explore all the +# possible combinations on the grid, which can be costly to compute, whereas the +# parameter `n_iter` of the :class:`~sklearn.model_selection.RandomizedSearchCV` +# chooses a different random combination for each iteration. Notice that setting +# `n_iter` larger than the number of possible combinations in a grid would lead +# to repeating already-explored combinations. + import numpy as np parameters = { @@ -86,7 +95,11 @@ # %% # We search for the best parameters for both the feature extraction and the -# classifier. +# classifier. In this case `n_iter=40` is not an exhaustive search of the +# hyperparameter grid. In practice it would be interesting to increase the +# parameter `n_iter` to get a more informative analysis. The consequent increase +# in computing time can be handled by increasing the number of CPUs via the +# `n_jobs` parameter. from pprint import pprint from sklearn.model_selection import RandomizedSearchCV @@ -217,8 +230,3 @@ def shorten_param(param_name): # (i.e. `max_df` close to 1.0 or `min_df` close to 0) tend to overfit and # therefore require a stronger regularization to compensate. Having less # features require less regularization and less scoring time. -# -# In practice it would be interesting to increase the parameter `n_iter` of the -# :class:`~sklearn.model_selection.RandomizedSearchCV` to get a more informative -# analysis. This requires more computing time and can be done increasing the -# number of CPUs of the machine and via increasing the `n_jobs` parameter. From c05788ae42b8b4ea86d37d96c6f67acbbb44474e Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 5 Jul 2022 17:02:54 +0200 Subject: [PATCH 28/43] Improve wording --- ...lot_grid_search_text_feature_extraction.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index ca3f5222a7454..f7383d9332cd4 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -3,9 +3,9 @@ Sample pipeline for text feature extraction and evaluation ========================================================== -The dataset used in this example is the 20 newsgroups dataset which will be -automatically downloaded, cached and reused for the document -classification example. +The dataset used in this example is :ref:`20newsgroups_dataset` which will be +automatically downloaded, cached and reused for the document classification +example. In this example we tune the hyperparameters of a particular classifier using a :class:`~sklearn.model_selection.RandomizedSearchCV`. For a demo on the @@ -25,8 +25,8 @@ # Data loading # ------------ # We load two categories from the training set. You can adjust the number of -# categories by giving their names to the dataset loader or setting them to -# `None` to get the 20 of them. +# categories by adding their names to the list or setting `categories=None` in +# the dataset loader to get the 20 of them. from sklearn.datasets import fetch_20newsgroups @@ -59,7 +59,7 @@ # Pipeline with hyperparameter tuning # ----------------------------------- # We define a pipeline combining a text feature vectorizer with a simple -# classifier. We also define a set of parameters to use for random search. +# classifier. from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import ComplementNB @@ -79,9 +79,9 @@ # :class:`~sklearn.model_selection.GridSearchCV` instead would explore all the # possible combinations on the grid, which can be costly to compute, whereas the # parameter `n_iter` of the :class:`~sklearn.model_selection.RandomizedSearchCV` -# chooses a different random combination for each iteration. Notice that setting -# `n_iter` larger than the number of possible combinations in a grid would lead -# to repeating already-explored combinations. +# controls the number of different random combination that are evaluated. Notice +# that setting `n_iter` larger than the number of possible combinations in a +# grid would lead to repeating already-explored combinations. import numpy as np @@ -230,3 +230,6 @@ def shorten_param(param_name): # (i.e. `max_df` close to 1.0 or `min_df` close to 0) tend to overfit and # therefore require a stronger regularization to compensate. Having less # features require less regularization and less scoring time. +# +# The best accuracies are obtained when `alpha` is between :math:`10^{-6}` and +# :math:`10^0`, regardless of the hyperparameter `norm`. From f98598f6e80bc1a0e4bf3b0d0ab3c8aacf293f43 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 5 Jul 2022 17:09:57 +0200 Subject: [PATCH 29/43] Move ngram_range mapping for consistency --- .../plot_grid_search_text_feature_extraction.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index f7383d9332cd4..3f9e5ee7e7a61 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -155,8 +155,6 @@ def shorten_param(param_name): cv_results = pd.DataFrame(random_search.cv_results_) cv_results = cv_results.rename(shorten_param, axis=1) -# unigrams are mapped to index 1 and bigrams to index 2 -cv_results["ngram_range"] = cv_results["ngram_range"].apply(lambda x: x[1]) # %% # We can use a `plotly.express.scatter @@ -202,6 +200,8 @@ def shorten_param(param_name): transform_funcs = dict.fromkeys(column_results, lambda x: x) transform_funcs["alpha"] = math.log10 transform_funcs["norm"] = lambda x: 2 if x == "l2" else 1 +# unigrams are mapped to index 1 and bigrams to index 2 +transform_funcs["ngram_range"] = lambda x: x[1] fig = px.parallel_coordinates( cv_results[column_results].apply(transform_funcs), From 7b32e976ce428492de996b728d9664de34d9dbf1 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Wed, 20 Jul 2022 15:00:20 +0200 Subject: [PATCH 30/43] Apply suggestions from code review Co-authored-by: Olivier Grisel --- .../model_selection/plot_grid_search_text_feature_extraction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 3f9e5ee7e7a61..539f72426cbb3 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -226,7 +226,7 @@ def shorten_param(param_name): # In particular for this hyperparameter search, it is interesting to notice that # the top performing models do not seem to depend on the regularization `norm`, # but they do depend on a trade-off between `max_df`, `min_df` and the -# regularization strenght `alpha`. The reason is that including noisy features +# regularization strength `alpha`. The reason is that including noisy features # (i.e. `max_df` close to 1.0 or `min_df` close to 0) tend to overfit and # therefore require a stronger regularization to compensate. Having less # features require less regularization and less scoring time. From 91bd385951c6adad74eb54146b550b5a64c6cbb0 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Fri, 22 Jul 2022 15:32:48 +0200 Subject: [PATCH 31/43] Iter --- build_tools/github/doc_linux-64_conda.lock | 5 ----- build_tools/github/doc_min_dependencies_linux-64_conda.lock | 5 ----- 2 files changed, 10 deletions(-) diff --git a/build_tools/github/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock index 8ff333e9315bb..7097a26ceb7f1 100644 --- a/build_tools/github/doc_linux-64_conda.lock +++ b/build_tools/github/doc_linux-64_conda.lock @@ -194,12 +194,7 @@ https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py39hb9d737c_1. https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py39hba7629e_0.tar.bz2#ee8dff1fb28e0e2c458e845aae9d915a https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -<<<<<<< HEAD -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_1.tar.bz2#9039c6b86ddb65d7e8bf464337ae9053 -https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 -======= https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py39hae2aec6_0.tar.bz2#ea9760ab3700e63809de6ae71a11664b ->>>>>>> c1d6d7850410cc219efe489aeb9ba9c9d5402bda https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py39hb9d737c_0.tar.bz2#5852c69cad74811dc3c95f9ab6a184ef https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 diff --git a/build_tools/github/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock index b4f693f6dc628..7de2492e44987 100644 --- a/build_tools/github/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/github/doc_min_dependencies_linux-64_conda.lock @@ -119,12 +119,7 @@ https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h0a891b7_4. https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar.bz2#bc0cbf611fe2f86eab29b98e51404f5e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -<<<<<<< HEAD -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_1.tar.bz2#cd653a4a951ca80adb96ff6cd3b36883 -https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 -======= https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38h0ee0e06_0.tar.bz2#7ef61f9084bda76b2f7a668ec5d1499a ->>>>>>> c1d6d7850410cc219efe489aeb9ba9c9d5402bda https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py38h0a891b7_0.tar.bz2#e3908bd184030e7f4a3d837959ebf6d7 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 From b0b6365289c2dfec095c0eccd0b1af95dc5fb7d4 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Fri, 22 Jul 2022 19:05:08 +0200 Subject: [PATCH 32/43] Iter --- build_tools/github/doc_linux-64_conda.lock | 7 ++++--- .../github/doc_min_dependencies_linux-64_conda.lock | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/build_tools/github/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock index 7097a26ceb7f1..8208980afa9e0 100644 --- a/build_tools/github/doc_linux-64_conda.lock +++ b/build_tools/github/doc_linux-64_conda.lock @@ -54,7 +54,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-10.3.0-h26c7422_16. https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee https://conda.anaconda.org/conda-forge/linux-64/libudev1-249-h166bdaf_4.tar.bz2#dc075ff6fcb46b3d3c7652e543d5f334 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_1.tar.bz2#9c2a9c67255426d22174f888ba10b4c6 https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 @@ -109,7 +109,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_3.tar.bz2#b6f4a0850ba620030a48b88c25497aaa https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_0.tar.bz2#2cf5cb4cd116a78e639977eb61ad9987 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 @@ -195,6 +195,7 @@ https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py39hba7629e_0.tar. https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py39hae2aec6_0.tar.bz2#ea9760ab3700e63809de6ae71a11664b +https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py39hb9d737c_0.tar.bz2#5852c69cad74811dc3c95f9ab6a184ef https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 @@ -215,7 +216,7 @@ https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py39h1832856_0.tar.bz2#74e00961703972cf33b44a6fca7c3d51 -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 +https://conda.anaconda.org/conda-forge/noarch/pip-22.2-pyhd8ed1ab_0.tar.bz2#2e92a2c7eb81581410550bec3f28560d https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py39hf3d152e_0.tar.bz2#a6bcf633d12aabdfc4cb32a09ebc0f31 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.3.0-py39hd257fcd_1.tar.bz2#c4b698994b2d8d2e659ae02202e6abe4 diff --git a/build_tools/github/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock index 7de2492e44987..9dd412468a30a 100644 --- a/build_tools/github/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/github/doc_min_dependencies_linux-64_conda.lock @@ -26,7 +26,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_1.tar.bz2#9c2a9c67255426d22174f888ba10b4c6 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-0.10.0-he1b5a44_0.tar.bz2#78ccac2098edcd3673af2ceb3e95f932 https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 @@ -59,7 +59,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733 https://conda.anaconda.org/conda-forge/linux-64/mkl-2020.4-h726a3e6_304.tar.bz2#b9b35a50e5377b19da6ec0709ae77fc3 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_0.tar.bz2#2cf5cb4cd116a78e639977eb61ad9987 https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.1.1-hc9558a2_0.tar.bz2#1eb7c67eb11eab0c98a87f84174fdde1 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.1.1-he991be0_0.tar.bz2#e38ac82cc517b9e245c1ae99f9f140da https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa @@ -120,6 +120,7 @@ https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar. https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38h0ee0e06_0.tar.bz2#7ef61f9084bda76b2f7a668ec5d1499a +https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py38h0a891b7_0.tar.bz2#e3908bd184030e7f4a3d837959ebf6d7 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 @@ -138,7 +139,7 @@ https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.1.2-py38h250f245_1.tar.bz2#0ae46309d21c964547792bac48162fc8 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 +https://conda.anaconda.org/conda-forge/noarch/pip-22.2-pyhd8ed1ab_0.tar.bz2#2e92a2c7eb81581410550bec3f28560d https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py38h578d9bd_0.tar.bz2#626d2b8f96c8c3d20198e6bd84d1cfb7 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 From af2baebdffe58a37346c316368807fa70e954cc3 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 7 Sep 2022 14:08:10 +0200 Subject: [PATCH 33/43] Update lock files --- build_tools/github/doc_linux-64_conda.lock | 10 ++++++---- .../doc_min_dependencies_linux-64_conda.lock | 14 +++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/build_tools/github/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock index 6850a0f56a010..9ec0dfc306540 100644 --- a/build_tools/github/doc_linux-64_conda.lock +++ b/build_tools/github/doc_linux-64_conda.lock @@ -83,7 +83,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.b https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-he0ac6c6_0.tar.bz2#f5759f0c80708fbf9c4836c0cb46d0fe https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-hdcd2b5c_1.tar.bz2#6fe9e31c2b8d0b022626ccac13e6ca3c https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_4.tar.bz2#6b611734b73d639c084ac4be2fcd996a -https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.39.2-h753d276_1.tar.bz2#90136dc0a305db4e1df24945d431457b +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.39.3-h753d276_0.tar.bz2#ccb2457c73609f2622b8a4b3e42e5d8b https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-haa6b8db_3.tar.bz2#89acee135f0809a18a1f4537390aa2dd https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 @@ -112,7 +112,7 @@ https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_openb https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-h0e0dad5_3.tar.bz2#5627d42c13a9b117ae1701c6e195624f https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.30-h28c427c_1.tar.bz2#0bd292db365c83624316efc2764d9f16 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_1.tar.bz2#2676ec698ce91567fca50654ac1b18ba +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.3-h4ff8645_0.tar.bz2#f03cf4ec974e32b6c5d349f62637e36e https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 @@ -180,6 +180,7 @@ https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.t https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2#92facfec94bc02d6ccf42e7173831a36 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.3.0-pyha770c72_0.tar.bz2#a9d85960bc62d53cc4ea0d1d27f73c98 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2#a3508a0c850745b875de88aea4c40cc5 https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda @@ -199,6 +200,7 @@ https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/partd-1.3.0-pyhd8ed1ab_0.tar.bz2#af8c82d121e63082926062d61d9abb54 https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py39hd5dbb17_2.tar.bz2#3b74a959f6a8008f5901de60b3572c09 https://conda.anaconda.org/conda-forge/noarch/pip-22.2.2-pyhd8ed1ab_0.tar.bz2#0b43abe4d3ee93e82742d37def53a836 +https://conda.anaconda.org/conda-forge/noarch/plotly-5.10.0-pyhd8ed1ab_0.tar.bz2#e95502aa0f8e3db05d198214472575de https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.2-py39hb9d737c_0.tar.bz2#1e7ffe59e21862559e06b981817e5058 https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 @@ -232,12 +234,12 @@ https://conda.anaconda.org/conda-forge/noarch/tifffile-2022.8.12-pyhd8ed1ab_0.ta https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.7-py39h18e9c17_0.tar.bz2#5ed8f83afff3b64fa91f7a6af8d7ff04 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py39h1832856_1.tar.bz2#472bb5b9d9eb26ac697902da265ee551 -https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.12.0-pyhd8ed1ab_0.tar.bz2#05ee2fb22c1eca4309c06d11aff049f3 https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hd257fcd_0.tar.bz2#bd7cdadf70e34a19333c3aacc40206e8 https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.11-pyhd8ed1ab_0.tar.bz2#0738978569b10669bdef41c671252dd1 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.3-py39hf3d152e_2.tar.bz2#98bf9bdfbac2ac73bbd1dc12a61519eb https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_1.tar.bz2#089382ee0e2dc2eae33a04cc3c2bddb0 -https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.0-hd8ed1ab_0.tar.bz2#c22474d96fa1725ae47def82b5668686 https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyhd8ed1ab_1.tar.bz2#cd1129e88f6278787212624e1b7a8001 https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.4.0-pyhd8ed1ab_1.tar.bz2#0aac89c61a466b0f9c4fd0ec44d81f1d https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.11.1-pyhd8ed1ab_0.tar.bz2#729254314a5d178eefca50acbc2687b8 diff --git a/build_tools/github/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock index dfb1a20e90d93..dac55e8cec09d 100644 --- a/build_tools/github/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/github/doc_min_dependencies_linux-64_conda.lock @@ -6,7 +6,9 @@ https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.ta https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_15.tar.bz2#5dd5127afd710f91f6a75821bac0a4f0 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-7.5.0-hda03d7c_20.tar.bz2#2146b25eb2a762a44fab709338a7b6d9 https://conda.anaconda.org/conda-forge/linux-64/libgfortran4-7.5.0-h14aa051_20.tar.bz2#a072eab836c3a9578ce72b5640ce592d +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-7.5.0-hb016644_20.tar.bz2#31d5500f621954679ee41d7f5d1089fb https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-7.5.0-h14aa051_20.tar.bz2#c3b2ad091c043c08689e64b10741484b https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2#f013cf7749536ce43d82afbffdf499ab @@ -40,10 +42,10 @@ https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4c https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-7.5.0-h47867f9_33.tar.bz2#3a31c3f430a31184a5d07e67d3b24e2c https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-hf34092f_1004.tar.bz2#5582e1349bee4a25705adca745bf6845 https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-7.5.0-h56cb351_20.tar.bz2#8f897b30195bd3a2251b4c51c3cc91cf -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-7.5.0-h64c220c_13.tar.bz2#4000478f05b985c952ad8e100d1c13fd +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-7.5.0-hd0bb8aa_20.tar.bz2#dbe78fc5fb9c339f8e55426559e12f7b https://conda.anaconda.org/conda-forge/linux-64/libllvm9-9.0.1-default_hc23dcda_7.tar.bz2#9f4686a2c319355fe8636ca13783c3b4 https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_4.tar.bz2#6b611734b73d639c084ac4be2fcd996a -https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.39.2-h753d276_1.tar.bz2#90136dc0a305db4e1df24945d431457b +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.39.3-h753d276_0.tar.bz2#ccb2457c73609f2622b8a4b3e42e5d8b https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa @@ -59,7 +61,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-h0e0dad5_3.tar.bz2#5627d42c13a9b117ae1701c6e195624f https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733 https://conda.anaconda.org/conda-forge/linux-64/mkl-2020.4-h726a3e6_304.tar.bz2#b9b35a50e5377b19da6ec0709ae77fc3 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_1.tar.bz2#2676ec698ce91567fca50654ac1b18ba +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.3-h4ff8645_0.tar.bz2#f03cf4ec974e32b6c5d349f62637e36e https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.1.1-hc9558a2_0.tar.bz2#1eb7c67eb11eab0c98a87f84174fdde1 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.1.1-he991be0_0.tar.bz2#e38ac82cc517b9e245c1ae99f9f140da @@ -104,6 +106,7 @@ https://conda.anaconda.org/conda-forge/noarch/tenacity-8.0.1-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2#92facfec94bc02d6ccf42e7173831a36 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.3.0-pyha770c72_0.tar.bz2#a9d85960bc62d53cc4ea0d1d27f73c98 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.4-py38ha312104_0.tar.bz2#8f82b87522fbb1d4b24e8b5e2b1d0501 @@ -119,6 +122,7 @@ https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar. https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.3.0-pyhd8ed1ab_0.tar.bz2#af8c82d121e63082926062d61d9abb54 https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38ha3b2c9c_2.tar.bz2#a077cc2bb9d854074b1cf4607252da7a +https://conda.anaconda.org/conda-forge/noarch/plotly-5.9.0-pyhd8ed1ab_0.tar.bz2#00a668931d448ce0ce42d1b02005d636 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.2-py38h0a891b7_0.tar.bz2#907a39b6d7443f770ed755885694f864 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 @@ -147,14 +151,14 @@ https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar. https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.5-hd8c4c69_1.tar.bz2#0e105d4afe0c3c81c4fbd9937ec4f359 https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.16.2-py38hb3f55d8_0.tar.bz2#468b398fefac8884cd6e6513af66549b -https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.12.0-pyhd8ed1ab_0.tar.bz2#05ee2fb22c1eca4309c06d11aff049f3 https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38ha8c2ead_3.tar.bz2#242c206b0c30fdc4c18aea16f04c4262 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.12.2-py38h5c078b8_0.tar.bz2#33787719ad03d33cffc4e2e3ea82bc9e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.11-pyhd8ed1ab_0.tar.bz2#0738978569b10669bdef41c671252dd1 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.2-py38_1.tar.bz2#c2b9671a19c01716c37fe0a0e18b0aec https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_1.tar.bz2#089382ee0e2dc2eae33a04cc3c2bddb0 -https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.0-hd8ed1ab_0.tar.bz2#c22474d96fa1725ae47def82b5668686 https://conda.anaconda.org/conda-forge/noarch/sphinx-4.0.1-pyh6c4a22f_2.tar.bz2#c203dcc46f262853ecbb9552c50d664e https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.2-pyhd8ed1ab_0.tar.bz2#025ad7ca2c7f65007ab6b6f5d93a56eb https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.7.0-py_0.tar.bz2#80bad3f857ecc86a4ab73f3e57addd13 From 5c95135062d7b47b60c435b2d00071cf93fcc631 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Tue, 13 Sep 2022 11:43:54 +0200 Subject: [PATCH 34/43] Apply suggestions from code review Co-authored-by: Julien Jerphanion --- ...lot_grid_search_text_feature_extraction.py | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 539f72426cbb3..043b0564585a4 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -81,7 +81,9 @@ # parameter `n_iter` of the :class:`~sklearn.model_selection.RandomizedSearchCV` # controls the number of different random combination that are evaluated. Notice # that setting `n_iter` larger than the number of possible combinations in a -# grid would lead to repeating already-explored combinations. +# grid would lead to repeating already-explored combinations. We search for +# the best parameters for both the feature extraction (`vect__`) and the +# classifier (`clf__`). import numpy as np @@ -94,12 +96,10 @@ } # %% -# We search for the best parameters for both the feature extraction and the -# classifier. In this case `n_iter=40` is not an exhaustive search of the -# hyperparameter grid. In practice it would be interesting to increase the -# parameter `n_iter` to get a more informative analysis. The consequent increase -# in computing time can be handled by increasing the number of CPUs via the -# `n_jobs` parameter. +# In this case `n_iter=40` is not an exhaustive search of the hyperparameters' +# grid. In practice it would be interesting to increase the parameter `n_iter +# to get a more informative analysis. The consequent increase in computing time +# can be handled by increasing the number of CPUs via the `n_jobs` parameter. from pprint import pprint from sklearn.model_selection import RandomizedSearchCV @@ -122,7 +122,7 @@ t0 = time() random_search.fit(data_train.data, data_train.target) -print(f"done in {time() - t0:.3f}s") +print(f"Done in {time() - t0:.3f}s") # %% print("Best parameters set:") @@ -148,6 +148,7 @@ def shorten_param(param_name): + """Remove components' prefixes in param_name.""" if "__" in param_name: return param_name.rsplit("__", 1)[1] return param_name @@ -165,7 +166,7 @@ def shorten_param(param_name): import plotly.express as px param_names = [shorten_param(name) for name in parameters.keys()] -labels = {"mean_score_time": "score time (s)", "mean_test_score": "CV score"} +labels = {"mean_score_time": "CV Score time (s)", "mean_test_score": "CV score (accuracy)"} fig = px.scatter( cv_results, x="mean_score_time", @@ -181,26 +182,29 @@ def shorten_param(param_name): # Notice that the cluster of models in the upper-left corner of the plot have # the best trade-off between accuracy and scoring time. In this case, using # bigrams increases the required scoring time without improving considerably the -# accuracy of the pipeline. For more information on how to customize an -# automated tuning to maximize score and minimize scoring time, see the example -# notebook -# :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. +# accuracy of the pipeline. +# +# .. note:: For more information on how to customize an automated tuning +# to maximize score and minimize scoring time, see the example notebook +# :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. # # We can also use a `plotly.express.parallel_coordinates # `_ # to further visualize the mean test score as a function of the tuned # hyperparameters. This helps finding interactions between more than two -# hyperparameters and provide an intuition on the relevance they have for -# maximizing the performance of a pipeline. +# hyperparameters and provide intuition on their relevance for improving +# the performance of a pipeline. import math column_results = param_names + ["mean_test_score", "mean_score_time"] transform_funcs = dict.fromkeys(column_results, lambda x: x) +# Using a logarithmic scale for alpha transform_funcs["alpha"] = math.log10 +# L1 norms are mapped to index 1, and L2 norms to index 2 transform_funcs["norm"] = lambda x: 2 if x == "l2" else 1 -# unigrams are mapped to index 1 and bigrams to index 2 +# Unigrams are mapped to index 1 and bigrams to index 2 transform_funcs["ngram_range"] = lambda x: x[1] fig = px.parallel_coordinates( @@ -227,9 +231,9 @@ def shorten_param(param_name): # the top performing models do not seem to depend on the regularization `norm`, # but they do depend on a trade-off between `max_df`, `min_df` and the # regularization strength `alpha`. The reason is that including noisy features -# (i.e. `max_df` close to 1.0 or `min_df` close to 0) tend to overfit and -# therefore require a stronger regularization to compensate. Having less -# features require less regularization and less scoring time. +# (i.e. `max_df` close to :math:`1.0` or `min_df` close to :math:`0`) tend +# to overfit and therefore require a stronger regularization to compensate. +# Having less features require less regularization and less scoring time. # -# The best accuracies are obtained when `alpha` is between :math:`10^{-6}` and +# The best accuracy scores are obtained when `alpha` is between :math:`10^{-6}` and # :math:`10^0`, regardless of the hyperparameter `norm`. From 3202572d8a1dc993b0379aa1300589f4c8b22395 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Tue, 13 Sep 2022 11:48:30 +0200 Subject: [PATCH 35/43] Apply suggestions from code review Co-authored-by: Guillaume Lemaitre --- ...lot_grid_search_text_feature_extraction.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 043b0564585a4..be704acdc257d 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -7,12 +7,11 @@ automatically downloaded, cached and reused for the document classification example. -In this example we tune the hyperparameters of a particular classifier using a +In this example, we tune the hyperparameters of a particular classifier using a :class:`~sklearn.model_selection.RandomizedSearchCV`. For a demo on the performance of some other classifiers, see the :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` notebook. - """ # Author: Olivier Grisel @@ -25,9 +24,9 @@ # Data loading # ------------ # We load two categories from the training set. You can adjust the number of -# categories by adding their names to the list or setting `categories=None` in -# the dataset loader to get the 20 of them. - +# categories by adding their names to the list or setting `categories=None` +# when calling the dataset loader :func:`~sklearn.datasets.fetch20newsgroups` +# to get the 20 of them. from sklearn.datasets import fetch_20newsgroups categories = [ @@ -59,7 +58,7 @@ # Pipeline with hyperparameter tuning # ----------------------------------- # We define a pipeline combining a text feature vectorizer with a simple -# classifier. +# classifier yet effective for text classification. from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import ComplementNB @@ -125,7 +124,7 @@ print(f"Done in {time() - t0:.3f}s") # %% -print("Best parameters set:") +print("Best parameters combination found:") best_parameters = random_search.best_estimator_.get_params() for param_name in sorted(parameters.keys()): print(f"{param_name}: {best_parameters[param_name]}") @@ -160,9 +159,9 @@ def shorten_param(param_name): # %% # We can use a `plotly.express.scatter # `_ -# to visualize the trade-off between scoring time and mean test score. Passing -# the cursor over a given point displays the corresponding parameters. - +# to visualize the trade-off between scoring time and mean test score +# (i.e. "CV score"). Passing the cursor over a given point displays the +# corresponding parameters. import plotly.express as px param_names = [shorten_param(name) for name in parameters.keys()] From ba6fba54b251368beb8f69a75bcfd055d2934279 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 13 Sep 2022 11:58:04 +0200 Subject: [PATCH 36/43] Format --- ...lot_grid_search_text_feature_extraction.py | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index be704acdc257d..2c823d39d0efd 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -24,9 +24,10 @@ # Data loading # ------------ # We load two categories from the training set. You can adjust the number of -# categories by adding their names to the list or setting `categories=None` -# when calling the dataset loader :func:`~sklearn.datasets.fetch20newsgroups` -# to get the 20 of them. +# categories by adding their names to the list or setting `categories=None` when +# calling the dataset loader :func:`~sklearn.datasets.fetch20newsgroups` to get +# the 20 of them. + from sklearn.datasets import fetch_20newsgroups categories = [ @@ -57,6 +58,7 @@ # %% # Pipeline with hyperparameter tuning # ----------------------------------- +# # We define a pipeline combining a text feature vectorizer with a simple # classifier yet effective for text classification. @@ -80,9 +82,9 @@ # parameter `n_iter` of the :class:`~sklearn.model_selection.RandomizedSearchCV` # controls the number of different random combination that are evaluated. Notice # that setting `n_iter` larger than the number of possible combinations in a -# grid would lead to repeating already-explored combinations. We search for -# the best parameters for both the feature extraction (`vect__`) and the -# classifier (`clf__`). +# grid would lead to repeating already-explored combinations. We search for the +# best parameters for both the feature extraction (`vect__`) and the classifier +# (`clf__`). import numpy as np @@ -96,9 +98,9 @@ # %% # In this case `n_iter=40` is not an exhaustive search of the hyperparameters' -# grid. In practice it would be interesting to increase the parameter `n_iter -# to get a more informative analysis. The consequent increase in computing time -# can be handled by increasing the number of CPUs via the `n_jobs` parameter. +# grid. In practice it would be interesting to increase the parameter `n_iter to +# get a more informative analysis. The consequent increase in computing time can +# be handled by increasing the number of CPUs via the `n_jobs` parameter. from pprint import pprint from sklearn.model_selection import RandomizedSearchCV @@ -159,13 +161,17 @@ def shorten_param(param_name): # %% # We can use a `plotly.express.scatter # `_ -# to visualize the trade-off between scoring time and mean test score -# (i.e. "CV score"). Passing the cursor over a given point displays the -# corresponding parameters. +# to visualize the trade-off between scoring time and mean test score (i.e. "CV +# score"). Passing the cursor over a given point displays the corresponding +# parameters. + import plotly.express as px param_names = [shorten_param(name) for name in parameters.keys()] -labels = {"mean_score_time": "CV Score time (s)", "mean_test_score": "CV score (accuracy)"} +labels = { + "mean_score_time": "CV Score time (s)", + "mean_test_score": "CV score (accuracy)", +} fig = px.scatter( cv_results, x="mean_score_time", @@ -181,18 +187,18 @@ def shorten_param(param_name): # Notice that the cluster of models in the upper-left corner of the plot have # the best trade-off between accuracy and scoring time. In this case, using # bigrams increases the required scoring time without improving considerably the -# accuracy of the pipeline. -# -# .. note:: For more information on how to customize an automated tuning -# to maximize score and minimize scoring time, see the example notebook +# accuracy of the pipeline. +# +# .. note:: For more information on how to customize an automated tuning to +# maximize score and minimize scoring time, see the example notebook # :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`. # # We can also use a `plotly.express.parallel_coordinates # `_ # to further visualize the mean test score as a function of the tuned # hyperparameters. This helps finding interactions between more than two -# hyperparameters and provide intuition on their relevance for improving -# the performance of a pipeline. +# hyperparameters and provide intuition on their relevance for improving the +# performance of a pipeline. import math @@ -230,9 +236,9 @@ def shorten_param(param_name): # the top performing models do not seem to depend on the regularization `norm`, # but they do depend on a trade-off between `max_df`, `min_df` and the # regularization strength `alpha`. The reason is that including noisy features -# (i.e. `max_df` close to :math:`1.0` or `min_df` close to :math:`0`) tend -# to overfit and therefore require a stronger regularization to compensate. -# Having less features require less regularization and less scoring time. +# (i.e. `max_df` close to :math:`1.0` or `min_df` close to :math:`0`) tend to +# overfit and therefore require a stronger regularization to compensate. Having +# less features require less regularization and less scoring time. # -# The best accuracy scores are obtained when `alpha` is between :math:`10^{-6}` and -# :math:`10^0`, regardless of the hyperparameter `norm`. +# The best accuracy scores are obtained when `alpha` is between :math:`10^{-6}` +# and :math:`10^0`, regardless of the hyperparameter `norm`. From f665a0187ef83d98287ec5ea3d0d057a07063577 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 13 Sep 2022 12:04:15 +0200 Subject: [PATCH 37/43] Redirect link to renamed example --- doc/conf.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index 741c5ec6caa82..9ec60d4b34092 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -268,6 +268,9 @@ "auto_examples/linear_model/plot_bayesian_ridge": ( "auto_examples/linear_model/plot_ard" ), + "examples/model_selection/grid_search_text_feature_extraction.py": ( + "examples/model_selection/plot_grid_search_text_feature_extraction.py" + ), } html_context["redirects"] = redirects for old_link in redirects: From 06254c413092ca3a4dffc3546cb30b6abf1d2231 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 13 Sep 2022 14:37:15 +0200 Subject: [PATCH 38/43] Apply suggestions from code review Co-authored-by: Guillaume Lemaitre --- ...lot_grid_search_text_feature_extraction.py | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 2c823d39d0efd..dc44772a64500 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -88,7 +88,7 @@ import numpy as np -parameters = { +parameter_grid = { "vect__max_df": (0.2, 0.4, 0.6, 0.8, 1.0), "vect__min_df": (1, 3, 5, 10), "vect__ngram_range": ((1, 1), (1, 2)), # unigrams or bigrams @@ -107,7 +107,7 @@ random_search = RandomizedSearchCV( estimator=pipeline, - param_distributions=parameters, + param_distributions=parameter_grid, n_iter=40, random_state=0, n_jobs=2, @@ -115,8 +115,8 @@ ) print("Performing grid search...") -print("parameters:") -pprint(parameters) +print("Hyperparameters to be evaluated:") +pprint(parameter_grid) # %% from time import time @@ -128,7 +128,7 @@ # %% print("Best parameters combination found:") best_parameters = random_search.best_estimator_.get_params() -for param_name in sorted(parameters.keys()): +for param_name in sorted(parameter_grid.keys()): print(f"{param_name}: {best_parameters[param_name]}") # %% @@ -163,11 +163,12 @@ def shorten_param(param_name): # `_ # to visualize the trade-off between scoring time and mean test score (i.e. "CV # score"). Passing the cursor over a given point displays the corresponding -# parameters. +# parameters. Error bars correspond to one standard deviation as computed in the +# different folds of the cross-validation. import plotly.express as px -param_names = [shorten_param(name) for name in parameters.keys()] +param_names = [shorten_param(name) for name in parameter_grid.keys()] labels = { "mean_score_time": "CV Score time (s)", "mean_test_score": "CV score (accuracy)", @@ -181,6 +182,15 @@ def shorten_param(param_name): hover_data=param_names, labels=labels, ) +fig.update_layout( + title={ + "text": "trade-off between scoring time and mean test score", + "y": 0.95, + "x": 0.5, + "xanchor": "center", + "yanchor": "top", + } +) fig # %% From 3e2d9e0c7ed77317add2745681fd724e0a6b3efd Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 13 Sep 2022 17:43:27 +0200 Subject: [PATCH 39/43] Add plotly as requirement with minimum associated version --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index 089929278c75d..4d0480845c735 100644 --- a/README.rst +++ b/README.rst @@ -42,6 +42,7 @@ .. |PandasMinVersion| replace:: 1.0.5 .. |SeabornMinVersion| replace:: 0.9.0 .. |PytestMinVersion| replace:: 5.0.1 +.. |PlotlyMinVersion| replace:: 5.9.0 .. image:: https://raw.githubusercontent.com/scikit-learn/scikit-learn/main/doc/logos/scikit-learn-logo.png :target: https://scikit-learn.org/ From 75f62b909060cf9d3a700c7c85ae9784ec5663f4 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 13 Sep 2022 17:53:14 +0200 Subject: [PATCH 40/43] Apply suggestions from code review Co-authored-by: Guillaume Lemaitre --- .../plot_grid_search_text_feature_extraction.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index dc44772a64500..592202d0088f6 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -209,6 +209,10 @@ def shorten_param(param_name): # hyperparameters. This helps finding interactions between more than two # hyperparameters and provide intuition on their relevance for improving the # performance of a pipeline. +# +# We apply a `math.log10` transformation on the `alpha` axis to spread the +# active range and improve the readability of the plot. A value :math:`x` on +# said axis is to be understood as :math:`10^x`. import math @@ -228,6 +232,15 @@ def shorten_param(param_name): color_continuous_scale=px.colors.sequential.Viridis_r, labels=labels, ) +fig.update_layout( + title={ + "text": "Parallel coordinates plot of text classifier pipeline", + "y": 0.95, + "x": 0.5, + "xanchor": "center", + "yanchor": "top", + } +) fig # %% @@ -238,10 +251,6 @@ def shorten_param(param_name): # cross two selections to see the intersections. You can undo a selection by # clicking once again on the same axis. # -# .. note:: We applied a `math.log10` transformation on the `alpha` axis to -# spread the active range and improve the readability of the plot. A value -# :math:`x` on said axis is to be understood as :math:`10^x`. -# # In particular for this hyperparameter search, it is interesting to notice that # the top performing models do not seem to depend on the regularization `norm`, # but they do depend on a trade-off between `max_df`, `min_df` and the From ea40c9ae57e3c1d858c73c6e81cabdcae3d31016 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Tue, 13 Sep 2022 17:59:37 +0200 Subject: [PATCH 41/43] Apply suggestions from code review Co-authored-by: Guillaume Lemaitre --- .../plot_grid_search_text_feature_extraction.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 592202d0088f6..88e4c9aa13d9e 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -83,8 +83,8 @@ # controls the number of different random combination that are evaluated. Notice # that setting `n_iter` larger than the number of possible combinations in a # grid would lead to repeating already-explored combinations. We search for the -# best parameters for both the feature extraction (`vect__`) and the classifier -# (`clf__`). +# best parameter combination for both the feature extraction (`vect__`) and the +# classifier (`clf__`). import numpy as np @@ -98,9 +98,11 @@ # %% # In this case `n_iter=40` is not an exhaustive search of the hyperparameters' -# grid. In practice it would be interesting to increase the parameter `n_iter to -# get a more informative analysis. The consequent increase in computing time can -# be handled by increasing the number of CPUs via the `n_jobs` parameter. +# grid. In practice it would be interesting to increase the parameter `n_iter` +# to get a more informative analysis. As a consequence, the computional time +# increases. We can reduce it by taking advantage of the parallelisation over +# the parameter combinations evaluation by increasing the number of CPUs used +# via the parameter `n_jobs`. from pprint import pprint from sklearn.model_selection import RandomizedSearchCV From bce3a9ebd8f23b6cfc07adb393b0c3f9ffec124f Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Wed, 14 Sep 2022 10:41:16 +0200 Subject: [PATCH 42/43] Fix plot title position --- .../model_selection/plot_grid_search_text_feature_extraction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/model_selection/plot_grid_search_text_feature_extraction.py b/examples/model_selection/plot_grid_search_text_feature_extraction.py index 88e4c9aa13d9e..9ad4296aad9b4 100644 --- a/examples/model_selection/plot_grid_search_text_feature_extraction.py +++ b/examples/model_selection/plot_grid_search_text_feature_extraction.py @@ -237,7 +237,7 @@ def shorten_param(param_name): fig.update_layout( title={ "text": "Parallel coordinates plot of text classifier pipeline", - "y": 0.95, + "y": 0.99, "x": 0.5, "xanchor": "center", "yanchor": "top", From 2bbcebacd6445489dd59aedaaec60dedfa6270bc Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 15 Sep 2022 10:09:16 +0200 Subject: [PATCH 43/43] Update README.rst --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 4d0480845c735..7d4e4ed9568ba 100644 --- a/README.rst +++ b/README.rst @@ -84,7 +84,7 @@ classes end with "Display") require Matplotlib (>= |MatplotlibMinVersion|). For running the examples Matplotlib >= |MatplotlibMinVersion| is required. A few examples require scikit-image >= |Scikit-ImageMinVersion|, a few examples require pandas >= |PandasMinVersion|, some examples require seaborn >= -|SeabornMinVersion|. +|SeabornMinVersion| and plotly >= |PlotlyMinVersion|. User installation ~~~~~~~~~~~~~~~~~