diff --git a/README.md b/README.md index 582878acc..66412f3a4 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ Example steps taken by ATOM's pipeline: * [50+ plots to analyze the data and model performance](https://tvdboom.github.io/ATOM/latest/user_guide/plots/#available-plots) * [Avoid refactoring to test new pipelines](https://tvdboom.github.io/ATOM/latest/user_guide/data_management/#branches) * [Native support for GPU training](https://tvdboom.github.io/ATOM/latest/user_guide/accelerating/#gpu-acceleration) +* [Integration with polars, pyspark and pyarrow](https://tvdboom.github.io/ATOM/latest/user_guide/data_management/#data-engines) * [25+ example notebooks to get you started](https://tvdboom.github.io/ATOM/latest/examples/accelerating_cuml/) * [Full integration with multilabel and multioutput datasets](https://tvdboom.github.io/ATOM/latest/user_guide/data_management/#multioutput-tasks) * [Native support for sparse datasets](https://tvdboom.github.io/ATOM/latest/user_guide/data_management/#sparse-datasets) diff --git a/atom/basemodel.py b/atom/basemodel.py index d0a6c7786..9f55efa11 100644 --- a/atom/basemodel.py +++ b/atom/basemodel.py @@ -779,6 +779,8 @@ def _score_from_est( data=_check_response_method(estimator, scorer._response_method)(X), index=y.index, ) + if isinstance(y_pred, pd.DataFrame) and self.task is Task.binary_classification: + y_pred = y_pred.iloc[:, 1] # Return probability of the positive class return self._score_from_pred(scorer, y, y_pred, **kwargs) diff --git a/atom/data_cleaning.py b/atom/data_cleaning.py index f5619da07..6e4fc865b 100644 --- a/atom/data_cleaning.py +++ b/atom/data_cleaning.py @@ -2621,11 +2621,6 @@ def fit(self, X: XConstructor, y: YConstructor | None = None) -> Self: random_state=kwargs.pop("random_state", self.random_state), **kwargs, ) - else: - raise ValueError( - f"Invalid value for the strategy parameter, got {self.strategy}. " - f"Choose from: {', '.join(strategies)}." - ) num_cols = Xt.select_dtypes(include="number") @@ -2889,11 +2884,6 @@ def transform( } for strat in lst(self.strategy): - if strat not in ["zscore", *strategies]: - raise ValueError( - "Invalid value for the strategy parameter. " - f"Choose from: zscore, {', '.join(strategies)}." - ) if strat != "zscore" and str(self.method) != "drop": raise ValueError( "Invalid value for the method parameter. Only the zscore " @@ -2986,12 +2976,8 @@ def transform( yt = yt[outlier_rows] else: - # Replace the columns in X and y with the new values from objective + # Replace the columns in X with the new values from objective Xt.update(objective) - if isinstance(yt, pd.Series) and yt.name in objective: - yt.update(objective[str(yt.name)]) - elif isinstance(yt, pd.DataFrame): - yt.update(objective) return variable_return(self._convert(Xt), self._convert(yt)) diff --git a/atom/nlp.py b/atom/nlp.py index 392124eb9..634101d56 100644 --- a/atom/nlp.py +++ b/atom/nlp.py @@ -955,10 +955,6 @@ def fit(self, X: XConstructor, y: YConstructor | None = None) -> Self: ) self._estimator = estimator(**self.kwargs) - if hasattr(self._estimator, "set_output"): - # transform="pandas" fails for sparse output - self._estimator.set_output(transform="default") - self._log("Fitting Vectorizer...", 1) self._estimator.fit(Xt[self._corpus]) diff --git a/atom/pipeline.py b/atom/pipeline.py index 9507450d7..6ec604d6f 100644 --- a/atom/pipeline.py +++ b/atom/pipeline.py @@ -354,11 +354,6 @@ def _fit( else: cloned = clone(transformer) - # Attach internal attrs otherwise wiped by clone - for attr in ("_cols", "_train_only"): - if hasattr(transformer, attr): - setattr(cloned, attr, getattr(transformer, attr)) - with adjust(cloned, verbose=self._verbose): # Fit or load the current estimator from cache # Type ignore because routed_params is never None but diff --git a/atom/training.py b/atom/training.py index 0d993f2c8..7103d23ad 100644 --- a/atom/training.py +++ b/atom/training.py @@ -29,6 +29,14 @@ ) +__all__ = [ + "DirectClassifier", "DirectForecaster", "DirectRegressor", + "SuccessiveHalvingClassifier", "SuccessiveHalvingForecaster", + "SuccessiveHalvingRegressor", "TrainSizingClassifier", + "TrainSizingForecaster", "TrainSizingRegressor", +] + + class Direct(BaseEstimator, BaseTrainer): """Direct training approach. diff --git a/atom/utils/utils.py b/atom/utils/utils.py index 30b50bf50..43e22096e 100644 --- a/atom/utils/utils.py +++ b/atom/utils/utils.py @@ -2023,17 +2023,14 @@ def check_is_fitted( Whether the estimator is fitted. """ - if not _is_fitted(obj, attributes): - if exception: - raise NotFittedError( - f"This {type(obj).__name__} instance is not yet fitted. " - f"Call {'run' if hasattr(obj, 'run') else 'fit'} with " - "appropriate arguments before using this object." - ) - else: - return False + if not (is_fitted := _is_fitted(obj, attributes)) and exception: + raise NotFittedError( + f"This {type(obj).__name__} instance is not yet fitted. " + f"Call {'run' if hasattr(obj, 'run') else 'fit'} with " + "appropriate arguments before using this object." + ) - return True + return is_fitted def get_custom_scorer(metric: str | MetricFunction | Scorer) -> Scorer: diff --git a/docs_sources/dependencies.md b/docs_sources/dependencies.md index a9d45b453..b39ee8103 100644 --- a/docs_sources/dependencies.md +++ b/docs_sources/dependencies.md @@ -40,7 +40,7 @@ packages are necessary for its correct functioning. * **[optuna](https://optuna.org/)** (>=3.4.0) * **[pandas](https://pandas.pydata.org/)** (>=2.1.2) * **[plotly](https://plotly.com/python/)** (>=5.18.0) -* **[scikit-learn](https://scikit-learn.org/stable/)** (>=1.4.0) +* **[scikit-learn](https://scikit-learn.org/stable/)** (>=1.4.1.post1) * **[scipy](https://www.scipy.org/)** (>=1.10.1) * **[shap](https://github.com/slundberg/shap/)** (>=0.43.0) * **[sktime[forecasting]](http://www.sktime.net/en/latest/)** (>=0.26.0) diff --git a/docs_sources/examples/automated_feature_scaling.ipynb b/docs_sources/examples/automated_feature_scaling.ipynb index 411a5fec0..c15989dbc 100644 --- a/docs_sources/examples/automated_feature_scaling.ipynb +++ b/docs_sources/examples/automated_feature_scaling.ipynb @@ -105,226 +105,264 @@ " \n", " acronym\n", " fullname\n", + " estimator\n", + " module\n", + " handles_missing\n", " needs_scaling\n", + " accepts_sparse\n", + " native_multilabel\n", + " native_multioutput\n", + " validation\n", + " supports_engines\n", " \n", " \n", " \n", " \n", " 0\n", - " AdaB\n", - " AdaBoost\n", - " False\n", - " \n", - " \n", - " 1\n", - " Bag\n", - " Bagging\n", - " False\n", - " \n", - " \n", - " 2\n", - " BNB\n", - " BernoulliNB\n", - " False\n", - " \n", - " \n", - " 3\n", " CatB\n", " CatBoost\n", + " CatBoostClassifier\n", + " catboost.core\n", + " True\n", + " True\n", " True\n", - " \n", - " \n", - " 4\n", - " CatNB\n", - " CategoricalNB\n", - " False\n", - " \n", - " \n", - " 5\n", - " CNB\n", - " ComplementNB\n", - " False\n", - " \n", - " \n", - " 6\n", - " Tree\n", - " DecisionTree\n", - " False\n", - " \n", - " \n", - " 7\n", - " Dummy\n", - " Dummy\n", - " False\n", - " \n", - " \n", - " 8\n", - " ETree\n", - " ExtraTree\n", - " False\n", - " \n", - " \n", - " 9\n", - " ET\n", - " ExtraTrees\n", - " False\n", - " \n", - " \n", - " 10\n", - " GNB\n", - " GaussianNB\n", - " False\n", - " \n", - " \n", - " 11\n", - " GP\n", - " GaussianProcess\n", - " False\n", - " \n", - " \n", - " 12\n", - " GBM\n", - " GradientBoostingMachine\n", " False\n", - " \n", - " \n", - " 13\n", - " hGBM\n", - " HistGradientBoosting\n", " False\n", + " n_estimators\n", + " catboost\n", " \n", " \n", - " 14\n", + " 1\n", " KNN\n", " KNearestNeighbors\n", + " KNeighborsClassifier\n", + " sklearn.neighbors._classification\n", + " False\n", + " True\n", " True\n", + " True\n", + " True\n", + " None\n", + " sklearn, sklearnex, cuml\n", " \n", " \n", - " 15\n", + " 2\n", " LGB\n", " LightGBM\n", + " LGBMClassifier\n", + " lightgbm.sklearn\n", + " True\n", + " True\n", " True\n", - " \n", - " \n", - " 16\n", - " LDA\n", - " LinearDiscriminantAnalysis\n", " False\n", + " False\n", + " n_estimators\n", + " lightgbm\n", " \n", " \n", - " 17\n", + " 3\n", " lSVM\n", " LinearSVM\n", + " LinearSVC\n", + " sklearn.svm._classes\n", + " False\n", + " True\n", " True\n", + " False\n", + " False\n", + " None\n", + " sklearn, cuml\n", " \n", " \n", - " 18\n", + " 4\n", " LR\n", " LogisticRegression\n", + " LogisticRegression\n", + " sklearn.linear_model._logistic\n", + " False\n", + " True\n", " True\n", + " False\n", + " False\n", + " None\n", + " sklearn, sklearnex, cuml\n", " \n", " \n", - " 19\n", + " 5\n", " MLP\n", " MultiLayerPerceptron\n", + " MLPClassifier\n", + " sklearn.neural_network._multilayer_perceptron\n", + " False\n", + " True\n", + " True\n", " True\n", - " \n", - " \n", - " 20\n", - " MNB\n", - " MultinomialNB\n", " False\n", + " max_iter\n", + " sklearn\n", " \n", " \n", - " 21\n", + " 6\n", " PA\n", " PassiveAggressive\n", + " PassiveAggressiveClassifier\n", + " sklearn.linear_model._passive_aggressive\n", + " False\n", " True\n", + " True\n", + " False\n", + " False\n", + " max_iter\n", + " sklearn\n", " \n", " \n", - " 22\n", + " 7\n", " Perc\n", " Perceptron\n", + " Perceptron\n", + " sklearn.linear_model._perceptron\n", + " False\n", " True\n", - " \n", - " \n", - " 23\n", - " QDA\n", - " QuadraticDiscriminantAnalysis\n", " False\n", + " False\n", + " False\n", + " max_iter\n", + " sklearn\n", " \n", " \n", - " 24\n", + " 8\n", " RNN\n", " RadiusNearestNeighbors\n", - " True\n", - " \n", - " \n", - " 25\n", - " RF\n", - " RandomForest\n", + " RadiusNeighborsClassifier\n", + " sklearn.neighbors._classification\n", " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " None\n", + " sklearn\n", " \n", " \n", - " 26\n", + " 9\n", " Ridge\n", " Ridge\n", + " RidgeClassifier\n", + " sklearn.linear_model._ridge\n", + " False\n", + " True\n", " True\n", + " True\n", + " False\n", + " None\n", + " sklearn, sklearnex, cuml\n", " \n", " \n", - " 27\n", + " 10\n", " SGD\n", " StochasticGradientDescent\n", + " SGDClassifier\n", + " sklearn.linear_model._stochastic_gradient\n", + " False\n", + " True\n", " True\n", + " False\n", + " False\n", + " max_iter\n", + " sklearn\n", " \n", " \n", - " 28\n", + " 11\n", " SVM\n", " SupportVectorMachine\n", + " SVC\n", + " sklearn.svm._classes\n", + " False\n", " True\n", + " True\n", + " False\n", + " False\n", + " None\n", + " sklearn, sklearnex, cuml\n", " \n", " \n", - " 29\n", + " 12\n", " XGB\n", " XGBoost\n", + " XGBClassifier\n", + " xgboost.sklearn\n", " True\n", + " True\n", + " True\n", + " False\n", + " False\n", + " n_estimators\n", + " xgboost\n", " \n", " \n", "\n", "" ], "text/plain": [ - " acronym fullname needs_scaling\n", - "0 AdaB AdaBoost False\n", - "1 Bag Bagging False\n", - "2 BNB BernoulliNB False\n", - "3 CatB CatBoost True\n", - "4 CatNB CategoricalNB False\n", - "5 CNB ComplementNB False\n", - "6 Tree DecisionTree False\n", - "7 Dummy Dummy False\n", - "8 ETree ExtraTree False\n", - "9 ET ExtraTrees False\n", - "10 GNB GaussianNB False\n", - "11 GP GaussianProcess False\n", - "12 GBM GradientBoostingMachine False\n", - "13 hGBM HistGradientBoosting False\n", - "14 KNN KNearestNeighbors True\n", - "15 LGB LightGBM True\n", - "16 LDA LinearDiscriminantAnalysis False\n", - "17 lSVM LinearSVM True\n", - "18 LR LogisticRegression True\n", - "19 MLP MultiLayerPerceptron True\n", - "20 MNB MultinomialNB False\n", - "21 PA PassiveAggressive True\n", - "22 Perc Perceptron True\n", - "23 QDA QuadraticDiscriminantAnalysis False\n", - "24 RNN RadiusNearestNeighbors True\n", - "25 RF RandomForest False\n", - "26 Ridge Ridge True\n", - "27 SGD StochasticGradientDescent True\n", - "28 SVM SupportVectorMachine True\n", - "29 XGB XGBoost True" + " acronym fullname estimator \\\n", + "0 CatB CatBoost CatBoostClassifier \n", + "1 KNN KNearestNeighbors KNeighborsClassifier \n", + "2 LGB LightGBM LGBMClassifier \n", + "3 lSVM LinearSVM LinearSVC \n", + "4 LR LogisticRegression LogisticRegression \n", + "5 MLP MultiLayerPerceptron MLPClassifier \n", + "6 PA PassiveAggressive PassiveAggressiveClassifier \n", + "7 Perc Perceptron Perceptron \n", + "8 RNN RadiusNearestNeighbors RadiusNeighborsClassifier \n", + "9 Ridge Ridge RidgeClassifier \n", + "10 SGD StochasticGradientDescent SGDClassifier \n", + "11 SVM SupportVectorMachine SVC \n", + "12 XGB XGBoost XGBClassifier \n", + "\n", + " module handles_missing \\\n", + "0 catboost.core True \n", + "1 sklearn.neighbors._classification False \n", + "2 lightgbm.sklearn True \n", + "3 sklearn.svm._classes False \n", + "4 sklearn.linear_model._logistic False \n", + "5 sklearn.neural_network._multilayer_perceptron False \n", + "6 sklearn.linear_model._passive_aggressive False \n", + "7 sklearn.linear_model._perceptron False \n", + "8 sklearn.neighbors._classification False \n", + "9 sklearn.linear_model._ridge False \n", + "10 sklearn.linear_model._stochastic_gradient False \n", + "11 sklearn.svm._classes False \n", + "12 xgboost.sklearn True \n", + "\n", + " needs_scaling accepts_sparse native_multilabel native_multioutput \\\n", + "0 True True False False \n", + "1 True True True True \n", + "2 True True False False \n", + "3 True True False False \n", + "4 True True False False \n", + "5 True True True False \n", + "6 True True False False \n", + "7 True False False False \n", + "8 True True True True \n", + "9 True True True False \n", + "10 True True False False \n", + "11 True True False False \n", + "12 True True False False \n", + "\n", + " validation supports_engines \n", + "0 n_estimators catboost \n", + "1 None sklearn, sklearnex, cuml \n", + "2 n_estimators lightgbm \n", + "3 None sklearn, cuml \n", + "4 None sklearn, sklearnex, cuml \n", + "5 max_iter sklearn \n", + "6 max_iter sklearn \n", + "7 max_iter sklearn \n", + "8 None sklearn \n", + "9 None sklearn, sklearnex, cuml \n", + "10 max_iter sklearn \n", + "11 None sklearn, sklearnex, cuml \n", + "12 n_estimators xgboost " ] }, "execution_count": 4, @@ -334,7 +372,7 @@ ], "source": [ "# Check which models require feature scaling\n", - "atom.available_models()[[\"acronym\", \"fullname\", \"needs_scaling\"]]" + "atom.available_models(needs_scaling=True)" ] }, { @@ -356,22 +394,22 @@ "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.9913\n", "Test evaluation --> f1: 0.9861\n", - "Time elapsed: 0.124s\n", + "Time elapsed: 0.120s\n", "-------------------------------------------------\n", - "Time: 0.124s\n", + "Time: 0.120s\n", "\n", "\n", "Results for Bagging:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.9982\n", "Test evaluation --> f1: 0.9444\n", - "Time elapsed: 0.070s\n", + "Time elapsed: 0.067s\n", "-------------------------------------------------\n", - "Time: 0.070s\n", + "Time: 0.067s\n", "\n", "\n", "Final results ==================== >>\n", - "Total time: 0.200s\n", + "Total time: 0.194s\n", "-------------------------------------\n", "LogisticRegression --> f1: 0.9861 !\n", "Bagging --> f1: 0.9444\n" diff --git a/docs_sources/examples/hyperparameter_tuning.ipynb b/docs_sources/examples/hyperparameter_tuning.ipynb index 18c936fbc..acb242341 100644 --- a/docs_sources/examples/hyperparameter_tuning.ipynb +++ b/docs_sources/examples/hyperparameter_tuning.ipynb @@ -98,34 +98,34 @@ "Running hyperparameter tuning for MultiLayerPerceptron...\n", "| trial | hidden_layer_1 | hidden_layer_2 | hidden_layer_3 | hidden_layer_4 | f1 | best_f1 | ap | best_ap | time_trial | time_ht | state |\n", "| ----- | -------------- | -------------- | -------------- | -------------- | ------- | ------- | ------- | ------- | ---------- | ------- | -------- |\n", - "| 0 | 3 | 17 | 10 | 2 | 0.9464 | 0.9464 | 0.9512 | 0.9512 | 17.580s | 17.580s | COMPLETE |\n", - "| 1 | 2 | 11 | 12 | 3 | 0.9744 | 0.9744 | 0.9603 | 0.9603 | 17.440s | 35.021s | COMPLETE |\n", - "| 2 | 3 | 15 | 14 | 4 | 0.9915 | 0.9915 | 0.9831 | 0.9831 | 13.108s | 48.129s | COMPLETE |\n", - "| 3 | 2 | 19 | 10 | 4 | 0.9655 | 0.9915 | 0.954 | 0.9831 | 12.274s | 01m:00s | COMPLETE |\n", - "| 4 | 3 | 16 | 11 | 2 | 0.9661 | 0.9915 | 0.9445 | 0.9831 | 0.856s | 01m:01s | COMPLETE |\n", - "| 5 | 4 | 20 | 13 | 4 | 0.9739 | 0.9915 | 0.9703 | 0.9831 | 0.905s | 01m:02s | COMPLETE |\n", - "| 6 | 4 | 19 | 10 | 2 | 0.9828 | 0.9915 | 0.9767 | 0.9831 | 1.051s | 01m:03s | COMPLETE |\n", - "| 7 | 2 | 19 | 11 | 3 | 0.7733 | 0.9915 | 0.6304 | 0.9831 | 1.028s | 01m:04s | COMPLETE |\n", - "| 8 | 4 | 15 | 17 | 2 | 0.9915 | 0.9915 | 0.9831 | 0.9831 | 0.896s | 01m:05s | COMPLETE |\n", - "| 9 | 4 | 19 | 10 | 4 | 0.9828 | 0.9915 | 0.9767 | 0.9831 | 0.893s | 01m:06s | COMPLETE |\n", + "| 0 | 3 | 17 | 10 | 2 | 0.9464 | 0.9464 | 0.9844 | 0.9844 | 9.522s | 9.522s | COMPLETE |\n", + "| 1 | 2 | 11 | 12 | 3 | 0.9744 | 0.9744 | 0.9991 | 0.9991 | 9.369s | 18.891s | COMPLETE |\n", + "| 2 | 3 | 15 | 14 | 4 | 0.9915 | 0.9915 | 0.9978 | 0.9991 | 11.460s | 30.351s | COMPLETE |\n", + "| 3 | 2 | 19 | 10 | 4 | 0.9655 | 0.9915 | 0.9878 | 0.9991 | 11.359s | 41.709s | COMPLETE |\n", + "| 4 | 3 | 16 | 11 | 2 | 0.9661 | 0.9915 | 0.9981 | 0.9991 | 0.653s | 42.362s | COMPLETE |\n", + "| 5 | 4 | 20 | 13 | 4 | 0.9739 | 0.9915 | 0.9989 | 0.9991 | 0.610s | 42.972s | COMPLETE |\n", + "| 6 | 4 | 19 | 10 | 2 | 0.9828 | 0.9915 | 0.9907 | 0.9991 | 0.606s | 43.578s | COMPLETE |\n", + "| 7 | 2 | 19 | 11 | 3 | 0.7733 | 0.9915 | 0.9997 | 0.9997 | 0.601s | 44.179s | COMPLETE |\n", + "| 8 | 4 | 15 | 17 | 2 | 0.9915 | 0.9915 | 0.9997 | 0.9997 | 0.606s | 44.785s | COMPLETE |\n", + "| 9 | 4 | 19 | 10 | 4 | 0.9828 | 0.9915 | 0.9822 | 0.9997 | 0.610s | 45.395s | COMPLETE |\n", "Hyperparameter tuning ---------------------------\n", - "Best trial --> 2\n", + "Best trial --> 8\n", "Best parameters:\n", - " --> hidden_layer_sizes: (3, 15, 14, 4)\n", - "Best evaluation --> f1: 0.9915 ap: 0.9831\n", - "Time elapsed: 01m:06s\n", + " --> hidden_layer_sizes: (4, 15, 17, 2)\n", + "Best evaluation --> f1: 0.9915 ap: 0.9997\n", + "Time elapsed: 45.395s\n", "Fit ---------------------------------------------\n", - "Train evaluation --> f1: 0.993 ap: 0.998\n", - "Test evaluation --> f1: 0.9861 ap: 0.995\n", - "Time elapsed: 2.396s\n", + "Train evaluation --> f1: 0.9965 ap: 0.9991\n", + "Test evaluation --> f1: 0.9718 ap: 0.9938\n", + "Time elapsed: 1.740s\n", "-------------------------------------------------\n", - "Time: 01m:08s\n", + "Time: 47.135s\n", "\n", "\n", "Final results ==================== >>\n", - "Total time: 01m:09s\n", + "Total time: 47.340s\n", "-------------------------------------\n", - "MultiLayerPerceptron --> f1: 0.9861 ap: 0.995\n" + "MultiLayerPerceptron --> f1: 0.9718 ap: 0.9938\n" ] } ], @@ -144,7 +144,8 @@ " \"hidden_layer_3\": IntDistribution(10, 20),\n", " \"hidden_layer_4\": IntDistribution(2, 4),\n", " }\n", - " }\n", + " },\n", + " errors='raise'\n", ")" ] }, @@ -156,7 +157,7 @@ { "data": { "text/plain": [ - "FrozenTrial(number=2, state=1, values=[0.9914529914529915, 0.9830508474576272], datetime_start=datetime.datetime(2024, 3, 3, 13, 58, 16, 682005), datetime_complete=datetime.datetime(2024, 3, 3, 13, 58, 29, 790092), params={'hidden_layer_1': 3, 'hidden_layer_2': 15, 'hidden_layer_3': 14, 'hidden_layer_4': 4}, user_attrs={'estimator': MLPClassifier(hidden_layer_sizes=(3, 15, 14, 4), random_state=1)}, system_attrs={'nsga2:generation': 0}, intermediate_values={}, distributions={'hidden_layer_1': IntDistribution(high=4, log=False, low=2, step=1), 'hidden_layer_2': IntDistribution(high=20, log=False, low=10, step=1), 'hidden_layer_3': IntDistribution(high=20, log=False, low=10, step=1), 'hidden_layer_4': IntDistribution(high=4, log=False, low=2, step=1)}, trial_id=2, value=None)" + "FrozenTrial(number=8, state=1, values=[0.9914529914529915, 0.9997077732320282], datetime_start=datetime.datetime(2024, 3, 5, 12, 9, 40, 773486), datetime_complete=datetime.datetime(2024, 3, 5, 12, 9, 41, 379399), params={'hidden_layer_1': 4, 'hidden_layer_2': 15, 'hidden_layer_3': 17, 'hidden_layer_4': 2}, user_attrs={'estimator': MLPClassifier(hidden_layer_sizes=(4, 15, 17, 2), random_state=1)}, system_attrs={'nsga2:generation': 0}, intermediate_values={}, distributions={'hidden_layer_1': IntDistribution(high=4, log=False, low=2, step=1), 'hidden_layer_2': IntDistribution(high=20, log=False, low=10, step=1), 'hidden_layer_3': IntDistribution(high=20, log=False, low=10, step=1), 'hidden_layer_4': IntDistribution(high=4, log=False, low=2, step=1)}, trial_id=8, value=None)" ] }, "execution_count": 5, @@ -289,16 +290,16 @@ ], "xaxis": "x", "y": [ - 0.951218835026931, - 0.9603143343582446, - 0.9830508474576272, - 0.9539626738354962, - 0.9444902548725637, - 0.9703174728425261, - 0.9766840717572248, - 0.6304347826086957, - 0.9830508474576272, - 0.9766840717572248 + 0.9844020103837696, + 0.9991280221957989, + 0.9978420724898686, + 0.9878052289964802, + 0.998086355529132, + 0.998854798152083, + 0.9907480263309556, + 0.9997077732320282, + 0.9997077732320282, + 0.9821684616842536 ], "yaxis": "y" } @@ -1162,8 +1163,8 @@ 1 ], "range": [ - 0.7586983832766965, - 1.0060879415096282 + 0.758660163586355, + 1.0061261611999697 ], "title": { "font": { @@ -1182,8 +1183,8 @@ 1 ], "range": [ - 0.6065253140439666, - 1.0069603160223564 + 0.9809791919376295, + 1.0008970429786523 ], "title": { "font": { @@ -1196,9 +1197,9 @@ } }, "text/html": [ - "