__author__ = "Max Dippel, Michael Burkart and Matthias Urban" __version__ = "0.0.1" __license__ = "BSD" import os, sys sys.path.append(os.path.abspath(os.path.join(__file__, "..", "..", ".."))) from autoPyTorch import AutoNetClassification from autoPyTorch.data_management.data_manager import DataManager # Note: You can write your own datamanager! Call fit with respective train, valid data (numpy matrices) dm = DataManager() dm.generate_classification(num_classes=3, num_features=21, num_samples=1500) # Note: every parameter has a default value, you do not have to specify anything. The given parameter allow a fast test. autonet = AutoNetClassification(budget_type='epochs', min_budget=1, max_budget=9, num_iterations=1, log_level='info') res = autonet.fit(X_train=dm.X, Y_train=dm.Y, X_valid=dm.X_train, Y_valid=dm.Y_train) print(res) print("Score:", autonet.score(X_test=dm.X_train, Y_test=dm.Y_train))
# Generate autonet autonet = AutoNetClassification() if TEST_CASE != 3 else AutoNetMultilabel() # add metrics and test_result to pipeline autonet.pipeline[autonet_nodes.LogFunctionsSelector.get_name()].add_log_function('test_result', test_result(autonet, dm.X_test, dm.Y_test)) metrics = autonet.pipeline[autonet_nodes.MetricSelector.get_name()] metrics.add_metric('pac_metric', autonet_metrics.pac_metric) metrics.add_metric('auc_metric', autonet_metrics.auc_metric) metrics.add_metric('accuracy', autonet_metrics.accuracy) # Fit autonet using train data res = autonet.fit(min_budget=300, max_budget=900, max_runtime=1800, budget_type='time', normalization_strategies=['maxabs'], train_metric=metric, additional_metrics=additional_metrices, cv_splits=3, preprocessors=["truncated_svd"], log_level="debug", X_train=dm.X_train, Y_train=dm.Y_train, X_valid=dm.X_valid, Y_valid=dm.Y_valid, categorical_features=dm.categorical_features, additional_logs=["test_result"], full_eval_each_epoch=True) # Calculate quality metrics using validation data. autonet.score(dm.X_test, dm.Y_test) print(res)
X_test, Y_test = X[ind_test], y[ind_test] autonet = AutoNetClassification(config_preset="tiny_cs", result_logger_dir="logs/") # Fit (note that the settings are for demonstration, you might need larger budgets) results_fit = autonet.fit(X_train=X_train, Y_train=Y_train, validation_split=0.3, max_runtime=300, min_budget=60, max_budget=100, refit=True) # Save fit results as json with open("logs/results_fit.json", "w") as file: json.dump(results_fit, file) # See how the random configuration performs (often it just predicts 0) score = autonet.score(X_test=X_test, Y_test=Y_test) pred = autonet.predict(X=X_test) print("Model prediction:", pred[0:10]) print("Accuracy score", score) pytorch_model = autonet.get_pytorch_model() print(pytorch_model) # Load fit results as json with open("logs/results_fit.json") as file: results_fit = json.load(file) # Create an autonet autonet_config = { "result_logger_dir": "logs/", "budget_type": "epochs", "log_level": "info", "use_tensorboard_logger": True, "validation_split": 0.0