Obtain run information

The following example shows how to obtain information from a finished Auto-sklearn run. In particular, it shows: * how to query which models were evaluated by Auto-sklearn * how to query the models in the final ensemble * how to get general statistics on the what Auto-sklearn evaluated

Auto-sklearn is a wrapper on top of the sklearn models. This example illustrates how to interact with the sklearn components directly, in this case a PCA preprocessor.

from pprint import pprint

import sklearn.datasets
import sklearn.metrics

import autosklearn.classification

Data Loading

X, y = sklearn.datasets.load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(
    X, y, random_state=1
)

Build and fit the classifier

automl = autosklearn.classification.AutoSklearnClassifier(
    time_left_for_this_task=30,
    per_run_time_limit=10,
    disable_evaluator_output=False,
    # To simplify querying the models in the final ensemble, we
    # restrict auto-sklearn to use only pca as a preprocessor
    include={"feature_preprocessor": ["pca"]},
)
automl.fit(X_train, y_train, dataset_name="breast_cancer")
AutoSklearnClassifier(ensemble_class=<class 'autosklearn.ensembles.ensemble_selection.EnsembleSelection'>,
                      include={'feature_preprocessor': ['pca']},
                      per_run_time_limit=10, time_left_for_this_task=30)

Predict using the model

predictions = automl.predict(X_test)
print("Accuracy score:{}".format(sklearn.metrics.accuracy_score(y_test, predictions)))
Accuracy score:0.958041958041958

Report the models found by Auto-Sklearn

Auto-sklearn uses Ensemble Selection to construct ensembles in a post-hoc fashion. The ensemble is a linear weighting of all models constructed during the hyperparameter optimization. This prints the final ensemble. It is a dictionary where model_id of each model is a key, and value is a dictionary containing information of that model. A model’s dict contains its 'model_id', 'rank', 'cost', 'ensemble_weight', and the model itself. The model is given by the 'data_preprocessor', 'feature_preprocessor', 'regressor'/'classifier' and 'sklearn_regressor'/'sklearn_classifier' entries. But for the 'cv' resampling strategy, the same for each cv model is stored in the 'estimators' list in the dict, along with the 'voting_model'.

pprint(automl.show_models(), indent=4)
{   2: {   'balancing': Balancing(random_state=1),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d17d6130>,
           'cost': 0.07801418439716312,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d17e14c0>,
           'ensemble_weight': 0.12,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05d17d62b0>,
           'model_id': 2,
           'rank': 1,
           'sklearn_classifier': RandomForestClassifier(max_features=5, n_estimators=512, n_jobs=1,
                       random_state=1, warm_start=True)},
    3: {   'balancing': Balancing(random_state=1),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d0f34f10>,
           'cost': 0.07092198581560283,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d22a6be0>,
           'ensemble_weight': 0.16,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05d0f349a0>,
           'model_id': 3,
           'rank': 2,
           'sklearn_classifier': RandomForestClassifier(max_features=1, min_samples_leaf=2, min_samples_split=20,
                       n_estimators=512, n_jobs=1, random_state=1,
                       warm_start=True)},
    4: {   'balancing': Balancing(random_state=1, strategy='weighting'),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d441cdf0>,
           'cost': 0.028368794326241176,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05ce64b610>,
           'ensemble_weight': 0.06,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05cb9ac7f0>,
           'model_id': 4,
           'rank': 3,
           'sklearn_classifier': MLPClassifier(activation='tanh', alpha=1.103855734598575e-05, beta_1=0.999,
              beta_2=0.9, early_stopping=True,
              hidden_layer_sizes=(229, 229, 229),
              learning_rate_init=0.00014375616988222174, max_iter=32,
              n_iter_no_change=32, random_state=1, verbose=0, warm_start=True)},
    5: {   'balancing': Balancing(random_state=1, strategy='weighting'),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d3b0e2e0>,
           'cost': 0.1063829787234043,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d1c158b0>,
           'ensemble_weight': 0.12,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05e9b68d90>,
           'model_id': 5,
           'rank': 4,
           'sklearn_classifier': KNeighborsClassifier(n_neighbors=4, weights='distance')},
    6: {   'balancing': Balancing(random_state=1),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d1c0e700>,
           'cost': 0.11347517730496459,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d1566d30>,
           'ensemble_weight': 0.12,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05d1c0e100>,
           'model_id': 6,
           'rank': 5,
           'sklearn_classifier': SVC(C=100.5905006626969, cache_size=1803.7291666666667,
    coef0=0.08087614244138486, gamma=0.011333066835975528, kernel='poly',
    max_iter=-1.0, random_state=1, tol=0.012391313886912093)},
    7: {   'balancing': Balancing(random_state=1, strategy='weighting'),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d462ec10>,
           'cost': 0.1063829787234043,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d3fd3c10>,
           'ensemble_weight': 0.08,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05d421b250>,
           'model_id': 7,
           'rank': 6,
           'sklearn_classifier': LinearSVC(C=10.369811497206404, class_weight='balanced', dual=False,
          intercept_scaling=1.0, random_state=1, tol=0.0015130257264171173)},
    8: {   'balancing': Balancing(random_state=1),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d2165490>,
           'cost': 0.028368794326241176,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d3e6c850>,
           'ensemble_weight': 0.28,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05d2165f70>,
           'model_id': 8,
           'rank': 7,
           'sklearn_classifier': KNeighborsClassifier(n_neighbors=10, p=1)},
    9: {   'balancing': Balancing(random_state=1, strategy='weighting'),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f05d0f2e1c0>,
           'cost': 0.08510638297872342,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f05d12192b0>,
           'ensemble_weight': 0.06,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f05d0f2e790>,
           'model_id': 9,
           'rank': 8,
           'sklearn_classifier': DecisionTreeClassifier(class_weight='balanced', criterion='entropy',
                       max_depth=1, min_samples_leaf=12, min_samples_split=13,
                       random_state=1)}}

Detailed statistics about the search - part 1

Auto-sklearn also keeps detailed statistics of the hyperparameter optimization procedurce, which are stored in a so-called run history.

print(automl.automl_.runhistory_)
<smac.runhistory.runhistory.RunHistory object at 0x7f05ce64b730>

Runs are stored inside an OrderedDict called data:

print(len(automl.automl_.runhistory_.data))
9

Let’s iterative over all entries

for run_key in automl.automl_.runhistory_.data:
    print("#########")
    print(run_key)
    print(automl.automl_.runhistory_.data[run_key])
#########
RunKey(config_id=1, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.07801418439716312, time=2.1041107177734375, status=<StatusType.SUCCESS: 1>, starttime=1663664549.9379454, endtime=1663664552.0665298, additional_info={'duration': 1.9913103580474854, 'num_run': 2, 'train_loss': 0.0, 'configuration_origin': 'Initial design'})
#########
RunKey(config_id=2, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.07092198581560283, time=1.8503355979919434, status=<StatusType.SUCCESS: 1>, starttime=1663664552.1301312, endtime=1663664554.0074, additional_info={'duration': 1.7435200214385986, 'num_run': 3, 'train_loss': 0.06315789473684208, 'configuration_origin': 'Initial design'})
#########
RunKey(config_id=3, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.028368794326241176, time=1.7300455570220947, status=<StatusType.SUCCESS: 1>, starttime=1663664554.1323466, endtime=1663664555.8862646, additional_info={'duration': 1.6518871784210205, 'num_run': 4, 'train_loss': 0.04210526315789476, 'configuration_origin': 'Initial design'})
#########
RunKey(config_id=4, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.1063829787234043, time=0.8748972415924072, status=<StatusType.SUCCESS: 1>, starttime=1663664556.0387397, endtime=1663664556.939485, additional_info={'duration': 0.7916548252105713, 'num_run': 5, 'train_loss': 0.0, 'configuration_origin': 'Initial design'})
#########
RunKey(config_id=5, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.11347517730496459, time=0.7713007926940918, status=<StatusType.SUCCESS: 1>, starttime=1663664557.1346703, endtime=1663664557.9320207, additional_info={'duration': 0.6807596683502197, 'num_run': 6, 'train_loss': 0.09122807017543855, 'configuration_origin': 'Initial design'})
#########
RunKey(config_id=6, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.1063829787234043, time=0.841759204864502, status=<StatusType.SUCCESS: 1>, starttime=1663664560.5457196, endtime=1663664561.4123611, additional_info={'duration': 0.759972095489502, 'num_run': 7, 'train_loss': 0.1473684210526316, 'configuration_origin': 'Random Search (sorted)'})
#########
RunKey(config_id=7, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.028368794326241176, time=0.9095327854156494, status=<StatusType.SUCCESS: 1>, starttime=1663664563.943324, endtime=1663664564.8796868, additional_info={'duration': 0.8181486129760742, 'num_run': 8, 'train_loss': 0.03157894736842104, 'configuration_origin': 'Random Search (sorted)'})
#########
RunKey(config_id=8, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=0.08510638297872342, time=0.9056379795074463, status=<StatusType.SUCCESS: 1>, starttime=1663664565.138814, endtime=1663664566.0731976, additional_info={'duration': 0.815222978591919, 'num_run': 9, 'train_loss': 0.07017543859649122, 'configuration_origin': 'Random Search'})
#########
RunKey(config_id=9, instance_id='{"task_id": "breast_cancer"}', seed=0, budget=0.0)
RunValue(cost=1.0, time=0.0, status=<StatusType.STOP: 8>, starttime=1663664569.1054664, endtime=1663664569.1054668, additional_info={})

and have a detailed look at one entry:

run_key = list(automl.automl_.runhistory_.data.keys())[0]
run_value = automl.automl_.runhistory_.data[run_key]

The run_key contains all information describing a run:

print("Configuration ID:", run_key.config_id)
print("Instance:", run_key.instance_id)
print("Seed:", run_key.seed)
print("Budget:", run_key.budget)
Configuration ID: 1
Instance: {"task_id": "breast_cancer"}
Seed: 0
Budget: 0.0

and the configuration can be looked up in the run history as well:

print(automl.automl_.runhistory_.ids_config[run_key.config_id])
Configuration(values={
  'balancing:strategy': 'none',
  'classifier:__choice__': 'random_forest',
  'classifier:random_forest:bootstrap': 'True',
  'classifier:random_forest:criterion': 'gini',
  'classifier:random_forest:max_depth': 'None',
  'classifier:random_forest:max_features': 0.5,
  'classifier:random_forest:max_leaf_nodes': 'None',
  'classifier:random_forest:min_impurity_decrease': 0.0,
  'classifier:random_forest:min_samples_leaf': 1,
  'classifier:random_forest:min_samples_split': 2,
  'classifier:random_forest:min_weight_fraction_leaf': 0.0,
  'data_preprocessor:__choice__': 'feature_type',
  'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'mean',
  'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'standardize',
  'feature_preprocessor:__choice__': 'pca',
  'feature_preprocessor:pca:keep_variance': 0.9999,
  'feature_preprocessor:pca:whiten': 'False',
})

The only other important entry is the budget in case you are using auto-sklearn with Successive Halving. The remaining parts of the key can be ignored for auto-sklearn and are only there because the underlying optimizer, SMAC, can handle more general problems, too.

The run_value contains all output from running the configuration:

print("Cost:", run_value.cost)
print("Time:", run_value.time)
print("Status:", run_value.status)
print("Additional information:", run_value.additional_info)
print("Start time:", run_value.starttime)
print("End time", run_value.endtime)
Cost: 0.07801418439716312
Time: 2.1041107177734375
Status: StatusType.SUCCESS
Additional information: {'duration': 1.9913103580474854, 'num_run': 2, 'train_loss': 0.0, 'configuration_origin': 'Initial design'}
Start time: 1663664549.9379454
End time 1663664552.0665298

Cost is basically the same as a loss. In case the metric to optimize for should be maximized, it is internally transformed into a minimization metric. Additionally, the status type gives information on whether the run was successful, while the additional information’s most interesting entry is the internal training loss. Furthermore, there is detailed information on the runtime available.

As an example, let’s find the best configuration evaluated. As Auto-sklearn solves a minimization problem internally, we need to look for the entry with the lowest loss:

losses_and_configurations = [
    (run_value.cost, run_key.config_id)
    for run_key, run_value in automl.automl_.runhistory_.data.items()
]
losses_and_configurations.sort()
print("Lowest loss:", losses_and_configurations[0][0])
print(
    "Best configuration:",
    automl.automl_.runhistory_.ids_config[losses_and_configurations[0][1]],
)
Lowest loss: 0.028368794326241176
Best configuration: Configuration(values={
  'balancing:strategy': 'weighting',
  'classifier:__choice__': 'mlp',
  'classifier:mlp:activation': 'tanh',
  'classifier:mlp:alpha': 1.103855734598575e-05,
  'classifier:mlp:batch_size': 'auto',
  'classifier:mlp:beta_1': 0.9,
  'classifier:mlp:beta_2': 0.999,
  'classifier:mlp:early_stopping': 'valid',
  'classifier:mlp:epsilon': 1e-08,
  'classifier:mlp:hidden_layer_depth': 3,
  'classifier:mlp:learning_rate_init': 0.00014375616988222174,
  'classifier:mlp:n_iter_no_change': 32,
  'classifier:mlp:num_nodes_per_layer': 229,
  'classifier:mlp:shuffle': 'True',
  'classifier:mlp:solver': 'adam',
  'classifier:mlp:tol': 0.0001,
  'classifier:mlp:validation_fraction': 0.1,
  'data_preprocessor:__choice__': 'feature_type',
  'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'most_frequent',
  'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'quantile_transformer',
  'data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:n_quantiles': 180,
  'data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:output_distribution': 'uniform',
  'feature_preprocessor:__choice__': 'pca',
  'feature_preprocessor:pca:keep_variance': 0.7895711479212801,
  'feature_preprocessor:pca:whiten': 'True',
})

Detailed statistics about the search - part 2

To maintain compatibility with scikit-learn, Auto-sklearn gives the same data as cv_results_.

print(automl.cv_results_)
{'mean_test_score': array([0.92198582, 0.92907801, 0.97163121, 0.89361702, 0.88652482,
       0.89361702, 0.97163121, 0.91489362]), 'rank_test_scores': array([4, 3, 1, 6, 8, 6, 1, 5]), 'mean_fit_time': array([2.10411072, 1.8503356 , 1.73004556, 0.87489724, 0.77130079,
       0.8417592 , 0.90953279, 0.90563798]), 'params': [{'balancing:strategy': 'none', 'classifier:__choice__': 'random_forest', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:random_forest:bootstrap': 'True', 'classifier:random_forest:criterion': 'gini', 'classifier:random_forest:max_depth': 'None', 'classifier:random_forest:max_features': 0.5, 'classifier:random_forest:max_leaf_nodes': 'None', 'classifier:random_forest:min_impurity_decrease': 0.0, 'classifier:random_forest:min_samples_leaf': 1, 'classifier:random_forest:min_samples_split': 2, 'classifier:random_forest:min_weight_fraction_leaf': 0.0, 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'mean', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'standardize', 'feature_preprocessor:pca:keep_variance': 0.9999, 'feature_preprocessor:pca:whiten': 'False'}, {'balancing:strategy': 'none', 'classifier:__choice__': 'random_forest', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:random_forest:bootstrap': 'True', 'classifier:random_forest:criterion': 'gini', 'classifier:random_forest:max_depth': 'None', 'classifier:random_forest:max_features': 0.9331254454871041, 'classifier:random_forest:max_leaf_nodes': 'None', 'classifier:random_forest:min_impurity_decrease': 0.0, 'classifier:random_forest:min_samples_leaf': 2, 'classifier:random_forest:min_samples_split': 20, 'classifier:random_forest:min_weight_fraction_leaf': 0.0, 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'mean', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'none', 'feature_preprocessor:pca:keep_variance': 0.9967857433838874, 'feature_preprocessor:pca:whiten': 'False'}, {'balancing:strategy': 'weighting', 'classifier:__choice__': 'mlp', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:mlp:activation': 'tanh', 'classifier:mlp:alpha': 1.103855734598575e-05, 'classifier:mlp:batch_size': 'auto', 'classifier:mlp:beta_1': 0.9, 'classifier:mlp:beta_2': 0.999, 'classifier:mlp:early_stopping': 'valid', 'classifier:mlp:epsilon': 1e-08, 'classifier:mlp:hidden_layer_depth': 3, 'classifier:mlp:learning_rate_init': 0.00014375616988222174, 'classifier:mlp:n_iter_no_change': 32, 'classifier:mlp:num_nodes_per_layer': 229, 'classifier:mlp:shuffle': 'True', 'classifier:mlp:solver': 'adam', 'classifier:mlp:tol': 0.0001, 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'most_frequent', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'quantile_transformer', 'feature_preprocessor:pca:keep_variance': 0.7895711479212801, 'feature_preprocessor:pca:whiten': 'True', 'classifier:mlp:validation_fraction': 0.1, 'data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:n_quantiles': 180, 'data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:output_distribution': 'uniform'}, {'balancing:strategy': 'weighting', 'classifier:__choice__': 'k_nearest_neighbors', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:k_nearest_neighbors:n_neighbors': 4, 'classifier:k_nearest_neighbors:p': 2, 'classifier:k_nearest_neighbors:weights': 'distance', 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'mean', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'normalize', 'feature_preprocessor:pca:keep_variance': 0.8047274080856589, 'feature_preprocessor:pca:whiten': 'False'}, {'balancing:strategy': 'none', 'classifier:__choice__': 'libsvm_svc', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:libsvm_svc:C': 100.5905006626969, 'classifier:libsvm_svc:gamma': 0.011333066835975528, 'classifier:libsvm_svc:kernel': 'poly', 'classifier:libsvm_svc:max_iter': -1, 'classifier:libsvm_svc:shrinking': 'True', 'classifier:libsvm_svc:tol': 0.012391313886912093, 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'mean', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'minmax', 'feature_preprocessor:pca:keep_variance': 0.9290439925152777, 'feature_preprocessor:pca:whiten': 'False', 'classifier:libsvm_svc:coef0': 0.08087614244138486, 'classifier:libsvm_svc:degree': 3}, {'balancing:strategy': 'weighting', 'classifier:__choice__': 'liblinear_svc', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:liblinear_svc:C': 10.369811497206404, 'classifier:liblinear_svc:dual': 'False', 'classifier:liblinear_svc:fit_intercept': 'True', 'classifier:liblinear_svc:intercept_scaling': 1, 'classifier:liblinear_svc:loss': 'squared_hinge', 'classifier:liblinear_svc:multi_class': 'ovr', 'classifier:liblinear_svc:penalty': 'l2', 'classifier:liblinear_svc:tol': 0.0015130257264171173, 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'median', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'robust_scaler', 'feature_preprocessor:pca:keep_variance': 0.5306607720040878, 'feature_preprocessor:pca:whiten': 'False', 'data_preprocessor:feature_type:numerical_transformer:rescaling:robust_scaler:q_max': 0.9866104280704078, 'data_preprocessor:feature_type:numerical_transformer:rescaling:robust_scaler:q_min': 0.20576464288464985}, {'balancing:strategy': 'none', 'classifier:__choice__': 'k_nearest_neighbors', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:k_nearest_neighbors:n_neighbors': 10, 'classifier:k_nearest_neighbors:p': 1, 'classifier:k_nearest_neighbors:weights': 'uniform', 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'median', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'quantile_transformer', 'feature_preprocessor:pca:keep_variance': 0.9923006586696794, 'feature_preprocessor:pca:whiten': 'False', 'data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:n_quantiles': 1866, 'data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:output_distribution': 'normal'}, {'balancing:strategy': 'weighting', 'classifier:__choice__': 'decision_tree', 'data_preprocessor:__choice__': 'feature_type', 'feature_preprocessor:__choice__': 'pca', 'classifier:decision_tree:criterion': 'entropy', 'classifier:decision_tree:max_depth_factor': 0.07400222370559417, 'classifier:decision_tree:max_features': 1.0, 'classifier:decision_tree:max_leaf_nodes': 'None', 'classifier:decision_tree:min_impurity_decrease': 0.0, 'classifier:decision_tree:min_samples_leaf': 12, 'classifier:decision_tree:min_samples_split': 13, 'classifier:decision_tree:min_weight_fraction_leaf': 0.0, 'data_preprocessor:feature_type:numerical_transformer:imputation:strategy': 'most_frequent', 'data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': 'standardize', 'feature_preprocessor:pca:keep_variance': 0.9710934401815425, 'feature_preprocessor:pca:whiten': 'True'}], 'status': ['Success', 'Success', 'Success', 'Success', 'Success', 'Success', 'Success', 'Success'], 'budgets': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'param_balancing:strategy': masked_array(data=['none', 'none', 'weighting', 'weighting', 'none',
                   'weighting', 'none', 'weighting'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U9'), 'param_classifier:__choice__': masked_array(data=['random_forest', 'random_forest', 'mlp',
                   'k_nearest_neighbors', 'libsvm_svc', 'liblinear_svc',
                   'k_nearest_neighbors', 'decision_tree'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U19'), 'param_data_preprocessor:__choice__': masked_array(data=['feature_type', 'feature_type', 'feature_type',
                   'feature_type', 'feature_type', 'feature_type',
                   'feature_type', 'feature_type'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U12'), 'param_feature_preprocessor:__choice__': masked_array(data=['pca', 'pca', 'pca', 'pca', 'pca', 'pca', 'pca', 'pca'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U3'), 'param_classifier:adaboost:algorithm': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:adaboost:learning_rate': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:adaboost:max_depth': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:adaboost:n_estimators': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:bernoulli_nb:alpha': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:bernoulli_nb:fit_prior': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:decision_tree:criterion': masked_array(data=[--, --, --, --, --, --, --, 'entropy'],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:decision_tree:max_depth_factor': masked_array(data=[--, --, --, --, --, --, --, 0.07400222370559417],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value=1e+20), 'param_classifier:decision_tree:max_features': masked_array(data=[--, --, --, --, --, --, --, 1.0],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value=1e+20), 'param_classifier:decision_tree:max_leaf_nodes': masked_array(data=[--, --, --, --, --, --, --, 'None'],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:decision_tree:min_impurity_decrease': masked_array(data=[--, --, --, --, --, --, --, 0.0],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value=1e+20), 'param_classifier:decision_tree:min_samples_leaf': masked_array(data=[--, --, --, --, --, --, --, 12.0],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value=1e+20), 'param_classifier:decision_tree:min_samples_split': masked_array(data=[--, --, --, --, --, --, --, 13.0],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value=1e+20), 'param_classifier:decision_tree:min_weight_fraction_leaf': masked_array(data=[--, --, --, --, --, --, --, 0.0],
             mask=[ True,  True,  True,  True,  True,  True,  True, False],
       fill_value=1e+20), 'param_classifier:extra_trees:bootstrap': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:criterion': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:max_depth': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:max_features': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:max_leaf_nodes': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:min_impurity_decrease': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:min_samples_leaf': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:min_samples_split': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:extra_trees:min_weight_fraction_leaf': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:early_stop': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:l2_regularization': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:learning_rate': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:loss': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:max_bins': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:max_depth': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:max_leaf_nodes': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:min_samples_leaf': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:scoring': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:tol': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:k_nearest_neighbors:n_neighbors': masked_array(data=[--, --, --, 4.0, --, --, 10.0, --],
             mask=[ True,  True,  True, False,  True,  True, False,  True],
       fill_value=1e+20), 'param_classifier:k_nearest_neighbors:p': masked_array(data=[--, --, --, 2.0, --, --, 1.0, --],
             mask=[ True,  True,  True, False,  True,  True, False,  True],
       fill_value=1e+20), 'param_classifier:k_nearest_neighbors:weights': masked_array(data=[--, --, --, 'distance', --, --, 'uniform', --],
             mask=[ True,  True,  True, False,  True,  True, False,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:lda:shrinkage': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:lda:tol': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:liblinear_svc:C': masked_array(data=[--, --, --, --, --, 10.369811497206404, --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value=1e+20), 'param_classifier:liblinear_svc:dual': masked_array(data=[--, --, --, --, --, 'False', --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:liblinear_svc:fit_intercept': masked_array(data=[--, --, --, --, --, 'True', --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:liblinear_svc:intercept_scaling': masked_array(data=[--, --, --, --, --, 1.0, --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value=1e+20), 'param_classifier:liblinear_svc:loss': masked_array(data=[--, --, --, --, --, 'squared_hinge', --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:liblinear_svc:multi_class': masked_array(data=[--, --, --, --, --, 'ovr', --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:liblinear_svc:penalty': masked_array(data=[--, --, --, --, --, 'l2', --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:liblinear_svc:tol': masked_array(data=[--, --, --, --, --, 0.0015130257264171173, --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value=1e+20), 'param_classifier:libsvm_svc:C': masked_array(data=[--, --, --, --, 100.5905006626969, --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:libsvm_svc:gamma': masked_array(data=[--, --, --, --, 0.011333066835975528, --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:libsvm_svc:kernel': masked_array(data=[--, --, --, --, 'poly', --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:libsvm_svc:max_iter': masked_array(data=[--, --, --, --, -1.0, --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:libsvm_svc:shrinking': masked_array(data=[--, --, --, --, 'True', --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:libsvm_svc:tol': masked_array(data=[--, --, --, --, 0.012391313886912093, --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:activation': masked_array(data=[--, --, 'tanh', --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:mlp:alpha': masked_array(data=[--, --, 1.103855734598575e-05, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:batch_size': masked_array(data=[--, --, 'auto', --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:mlp:beta_1': masked_array(data=[--, --, 0.9, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:beta_2': masked_array(data=[--, --, 0.999, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:early_stopping': masked_array(data=[--, --, 'valid', --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:mlp:epsilon': masked_array(data=[--, --, 1e-08, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:hidden_layer_depth': masked_array(data=[--, --, 3.0, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:learning_rate_init': masked_array(data=[--, --, 0.00014375616988222174, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:n_iter_no_change': masked_array(data=[--, --, 32.0, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:num_nodes_per_layer': masked_array(data=[--, --, 229.0, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:shuffle': masked_array(data=[--, --, 'True', --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:mlp:solver': masked_array(data=[--, --, 'adam', --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:mlp:tol': masked_array(data=[--, --, 0.0001, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:passive_aggressive:C': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:passive_aggressive:average': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:passive_aggressive:fit_intercept': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:passive_aggressive:loss': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:passive_aggressive:tol': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:qda:reg_param': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:random_forest:bootstrap': masked_array(data=['True', 'True', --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:random_forest:criterion': masked_array(data=['gini', 'gini', --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:random_forest:max_depth': masked_array(data=['None', 'None', --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:random_forest:max_features': masked_array(data=[0.5, 0.9331254454871041, --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:random_forest:max_leaf_nodes': masked_array(data=['None', 'None', --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_classifier:random_forest:min_impurity_decrease': masked_array(data=[0.0, 0.0, --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:random_forest:min_samples_leaf': masked_array(data=[1.0, 2.0, --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:random_forest:min_samples_split': masked_array(data=[2.0, 20.0, --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:random_forest:min_weight_fraction_leaf': masked_array(data=[0.0, 0.0, --, --, --, --, --, --],
             mask=[False, False,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:sgd:alpha': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:average': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:fit_intercept': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:learning_rate': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:loss': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:penalty': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:tol': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_data_preprocessor:feature_type:numerical_transformer:imputation:strategy': masked_array(data=['mean', 'mean', 'most_frequent', 'mean', 'mean',
                   'median', 'median', 'most_frequent'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U13'), 'param_data_preprocessor:feature_type:numerical_transformer:rescaling:__choice__': masked_array(data=['standardize', 'none', 'quantile_transformer',
                   'normalize', 'minmax', 'robust_scaler',
                   'quantile_transformer', 'standardize'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U20'), 'param_feature_preprocessor:pca:keep_variance': masked_array(data=[0.9999, 0.9967857433838874, 0.7895711479212801,
                   0.8047274080856589, 0.9290439925152777,
                   0.5306607720040878, 0.9923006586696794,
                   0.9710934401815425],
             mask=[False, False, False, False, False, False, False, False],
       fill_value=1e+20), 'param_feature_preprocessor:pca:whiten': masked_array(data=['False', 'False', 'True', 'False', 'False', 'False',
                   'False', 'True'],
             mask=[False, False, False, False, False, False, False, False],
       fill_value='N/A',
            dtype='<U5'), 'param_classifier:gradient_boosting:n_iter_no_change': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:gradient_boosting:validation_fraction': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:lda:shrinkage_factor': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:libsvm_svc:coef0': masked_array(data=[--, --, --, --, 0.08087614244138486, --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:libsvm_svc:degree': masked_array(data=[--, --, --, --, 3.0, --, --, --],
             mask=[ True,  True,  True,  True, False,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:mlp:validation_fraction': masked_array(data=[--, --, 0.1, --, --, --, --, --],
             mask=[ True,  True, False,  True,  True,  True,  True,  True],
       fill_value=1e+20), 'param_classifier:sgd:epsilon': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:eta0': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:l1_ratio': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_classifier:sgd:power_t': masked_array(data=[--, --, --, --, --, --, --, --],
             mask=[ True,  True,  True,  True,  True,  True,  True,  True],
       fill_value=1e+20,
            dtype=float64), 'param_data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:n_quantiles': masked_array(data=[--, --, 180.0, --, --, --, 1866.0, --],
             mask=[ True,  True, False,  True,  True,  True, False,  True],
       fill_value=1e+20), 'param_data_preprocessor:feature_type:numerical_transformer:rescaling:quantile_transformer:output_distribution': masked_array(data=[--, --, 'uniform', --, --, --, 'normal', --],
             mask=[ True,  True, False,  True,  True,  True, False,  True],
       fill_value='N/A',
            dtype='<U32'), 'param_data_preprocessor:feature_type:numerical_transformer:rescaling:robust_scaler:q_max': masked_array(data=[--, --, --, --, --, 0.9866104280704078, --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value=1e+20), 'param_data_preprocessor:feature_type:numerical_transformer:rescaling:robust_scaler:q_min': masked_array(data=[--, --, --, --, --, 0.20576464288464985, --, --],
             mask=[ True,  True,  True,  True,  True, False,  True,  True],
       fill_value=1e+20)}

Inspect the components of the best model

Iterate over the components of the model and print The explained variance ratio per stage

for i, (weight, pipeline) in enumerate(automl.get_models_with_weights()):
    for stage_name, component in pipeline.named_steps.items():
        if "feature_preprocessor" in stage_name:
            print(
                "The {}th pipeline has a explained variance of {}".format(
                    i,
                    # The component is an instance of AutoSklearnChoice.
                    # Access the sklearn object via the choice attribute
                    # We want the explained variance attributed of
                    # each principal component
                    component.choice.preprocessor.explained_variance_ratio_,
                )
            )
The 0th pipeline has a explained variance of [0.46038401 0.16124884 0.09747816 0.06923404 0.06142479 0.03312917
 0.03182802 0.01555463 0.01348582 0.00965531 0.00870982 0.007397
 0.00547082 0.00443245 0.00396559 0.00313575 0.0022883  0.00195796
 0.00156348]
The 1th pipeline has a explained variance of [0.98080571 0.01684553]
The 2th pipeline has a explained variance of [4.32956881e-01 1.79057296e-01 1.11737571e-01 6.80724345e-02
 5.94611519e-02 3.70629898e-02 2.38430977e-02 1.49326086e-02
 1.37641366e-02 1.13704890e-02 1.03737258e-02 8.74116751e-03
 7.57629717e-03 4.86528503e-03 3.32225143e-03 2.55773043e-03
 2.20759805e-03 1.88675402e-03 1.36245140e-03 1.03409213e-03
 8.39749085e-04 7.91287172e-04 6.75655689e-04 5.42961621e-04
 5.02641737e-04 2.07827509e-04 1.74597367e-04]
The 3th pipeline has a explained variance of [0.76699224 0.17152095]
The 4th pipeline has a explained variance of [0.49503611 0.16649281 0.09111888 0.07213284 0.04865917 0.03208923
 0.01851537 0.01223987]
The 5th pipeline has a explained variance of [0.72985767]
The 6th pipeline has a explained variance of [0.45954164 0.18010277 0.09814953 0.06334655]
The 7th pipeline has a explained variance of [0.43295688 0.1790573  0.11173757 0.06807243 0.05946115 0.03706299
 0.0238431  0.01493261 0.01376414 0.01137049 0.01037373 0.00874117]

Total running time of the script: ( 0 minutes 26.004 seconds)

Gallery generated by Sphinx-Gallery