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")
Fitting to the training data:   0%|          | 0/30 [00:00<?, ?it/s, The total time budget for this task is 0:00:30]
Fitting to the training data:   3%|3         | 1/30 [00:01<00:29,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:   7%|6         | 2/30 [00:02<00:28,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  10%|#         | 3/30 [00:03<00:27,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  13%|#3        | 4/30 [00:04<00:26,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  17%|#6        | 5/30 [00:05<00:25,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  20%|##        | 6/30 [00:06<00:24,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  23%|##3       | 7/30 [00:07<00:23,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  27%|##6       | 8/30 [00:08<00:22,  1.00s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  30%|###       | 9/30 [00:09<00:21,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  33%|###3      | 10/30 [00:10<00:20,  1.02s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  37%|###6      | 11/30 [00:11<00:19,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  40%|####      | 12/30 [00:12<00:18,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  43%|####3     | 13/30 [00:13<00:17,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  47%|####6     | 14/30 [00:14<00:16,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  50%|#####     | 15/30 [00:15<00:15,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  53%|#####3    | 16/30 [00:16<00:14,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  57%|#####6    | 17/30 [00:17<00:13,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  60%|######    | 18/30 [00:18<00:12,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data:  63%|######3   | 19/30 [00:19<00:11,  1.01s/it, The total time budget for this task is 0:00:30]
Fitting to the training data: 100%|##########| 30/30 [00:19<00:00,  1.57it/s, The total time budget for this task is 0:00:30]

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 0x7f2afcd2ffa0>,
           'cost': 0.07801418439716312,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af5557a60>,
           'ensemble_weight': 0.12,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2afcd2f370>,
           'model_id': 2,
           'rank': 4,
           '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 0x7f2af4dc8640>,
           'cost': 0.07092198581560283,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af76a2be0>,
           'ensemble_weight': 0.16,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af4dc8130>,
           'model_id': 3,
           'rank': 3,
           '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 0x7f2aee01ad00>,
           'cost': 0.028368794326241176,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af03d0a60>,
           'ensemble_weight': 0.06,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af6bf11c0>,
           'model_id': 4,
           'rank': 1,
           '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 0x7f2af7258c70>,
           'cost': 0.1063829787234043,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af732e6d0>,
           'ensemble_weight': 0.12,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af7258790>,
           'model_id': 5,
           'rank': 6,
           'sklearn_classifier': KNeighborsClassifier(n_neighbors=4, weights='distance')},
    6: {   'balancing': Balancing(random_state=1),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f2af4274f10>,
           'cost': 0.11347517730496459,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af4e09af0>,
           'ensemble_weight': 0.12,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af4274790>,
           'model_id': 6,
           'rank': 8,
           'sklearn_classifier': SVC(C=100.5905006626969, cache_size=1816.1770833333333,
    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 0x7f2af53368b0>,
           'cost': 0.1063829787234043,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af6e91a00>,
           'ensemble_weight': 0.08,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af5336580>,
           'model_id': 7,
           'rank': 7,
           '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 0x7f2af6ab0850>,
           'cost': 0.028368794326241176,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af41979a0>,
           'ensemble_weight': 0.28,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af6ab02e0>,
           'model_id': 8,
           'rank': 2,
           'sklearn_classifier': KNeighborsClassifier(n_neighbors=10, p=1)},
    9: {   'balancing': Balancing(random_state=1, strategy='weighting'),
           'classifier': <autosklearn.pipeline.components.classification.ClassifierChoice object at 0x7f2af45bbdc0>,
           'cost': 0.08510638297872342,
           'data_preprocessor': <autosklearn.pipeline.components.data_preprocessing.DataPreprocessorChoice object at 0x7f2af4b59910>,
           'ensemble_weight': 0.06,
           'feature_preprocessor': <autosklearn.pipeline.components.feature_preprocessing.FeaturePreprocessorChoice object at 0x7f2af45bb1c0>,
           'model_id': 9,
           'rank': 5,
           '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 0x7f2af4dd4df0>

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.084700107574463, status=<StatusType.SUCCESS: 1>, starttime=1669293987.7687888, endtime=1669293989.8773837, additional_info={'duration': 1.977937936782837, '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.864558219909668, status=<StatusType.SUCCESS: 1>, starttime=1669293989.9380379, endtime=1669293991.827219, additional_info={'duration': 1.7690739631652832, '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.6764445304870605, status=<StatusType.SUCCESS: 1>, starttime=1669293991.9542592, endtime=1669293993.6577768, additional_info={'duration': 1.6023883819580078, '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.8044607639312744, status=<StatusType.SUCCESS: 1>, starttime=1669293993.8067417, endtime=1669293994.6348577, additional_info={'duration': 0.7263660430908203, '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.6652591228485107, status=<StatusType.SUCCESS: 1>, starttime=1669293994.7952342, endtime=1669293995.4854486, additional_info={'duration': 0.5973846912384033, '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.8129374980926514, status=<StatusType.SUCCESS: 1>, starttime=1669293997.7581677, endtime=1669293998.5956388, additional_info={'duration': 0.7320952415466309, '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.8261840343475342, status=<StatusType.SUCCESS: 1>, starttime=1669294000.8262668, endtime=1669294001.6754014, additional_info={'duration': 0.7499759197235107, '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.7815749645233154, status=<StatusType.SUCCESS: 1>, starttime=1669294001.9135206, endtime=1669294002.7181022, additional_info={'duration': 0.7149951457977295, '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=1669294005.4592407, endtime=1669294005.459241, 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.084700107574463
Status: StatusType.SUCCESS
Additional information: {'duration': 1.977937936782837, 'num_run': 2, 'train_loss': 0.0, 'configuration_origin': 'Initial design'}
Start time: 1669293987.7687888
End time 1669293989.8773837

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.08470011, 1.86455822, 1.67644453, 0.80446076, 0.66525912,
       0.8129375 , 0.82618403, 0.78157496]), '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.781 seconds)

Gallery generated by Sphinx-Gallery