{"id":29338300,"url":"https://github.com/automl/autofolio","last_synced_at":"2026-03-27T02:26:36.560Z","repository":{"id":54802286,"uuid":"60358347","full_name":"automl/AutoFolio","owner":"automl","description":"Automated Algorithm Selection with Hyperparameter Optimization","archived":false,"fork":false,"pushed_at":"2023-10-04T15:53:05.000Z","size":3017,"stargazers_count":40,"open_issues_count":6,"forks_count":13,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-04T05:56:06.943Z","etag":null,"topics":["algorithm-selection"],"latest_commit_sha":null,"homepage":"https://www.automl.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/automl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-06-03T15:29:58.000Z","updated_at":"2025-08-24T13:51:55.000Z","dependencies_parsed_at":"2025-04-13T08:00:37.231Z","dependency_job_id":null,"html_url":"https://github.com/automl/AutoFolio","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/automl/AutoFolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automl%2FAutoFolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automl%2FAutoFolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automl%2FAutoFolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automl%2FAutoFolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/automl","download_url":"https://codeload.github.com/automl/AutoFolio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automl%2FAutoFolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278542676,"owners_count":26004061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm-selection"],"created_at":"2025-07-08T06:10:55.898Z","updated_at":"2025-10-06T00:51:07.657Z","avatar_url":"https://github.com/automl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AutoFolio\n\nAutoFolio is an algorithm selection tool,\ni.e., selecting a well-performing algorithm for a given instance [Rice 1976].\nIn contrast to other algorithm selection tools,\nusers of AutoFolio are bothered with the decision which algorithm selection approach to use\nand how to set its hyper-parameters.\nAutoFolio uses one of the state-of-the-art algorithm configuration tools, namely SMAC [Hutter et al LION'16]\nto automatically determine a well-performing algorithm selection approach\nand its hyper-parameters for a given algorithm selection data.\nTherefore, AutoFolio has a robust performance across different algorithm selection tasks.\n\n## Version\n\nThis package is a re-implementation of the original AutoFolio.\nIt follows the same approach as the original AutoFolio\nbut it has some crucial differences:\n\n* instead of SMAC v2, we use the pure Python implementation of SMAC (v3)\n* less implemented algorithm selection approaches -- focus on promising approaches to waste not unnecessary time during configuration\n* support of solution quality scenarios\n\n## License\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the 2-clause BSD license (please see the LICENSE file).\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\nYou should have received a copy of the 2-clause BSD license along with this program (see LICENSE file). If not, see https://opensource.org/licenses/BSD-2-Clause.\n\n## Installation\n\n### Requirements\n\nNOTE: AutoFolio requires the future SMAC 0.9; currently only available in the [development branch of SMAC](https://github.com/automl/SMAC3/tree/development)\n\nAutoFolio runs with '''Python 3.5'''.\n\nTo install (nearly) all requirements, please run:\n\n`cat requirements.txt | xargs -n 1 -L 1 pip install`\n\nMany of its dependencies can be fulfilled by using [Anaconda \u003e3.4](https://www.continuum.io/).\nIf you use Anaconda as your Python environment, you have to install three packages before you can install SMAC (as one of AutoFolio's requirements):\n\n`conda install gxx_linux-64 gcc_linux-64 swig`\n\nTo use pre-solving schedules, [clingo](http://potassco.sourceforge.net/) is required. We provide binary compiled under Ubuntu 14.04 which may not work under another OS. Please put a working `clingo` binary with Python support into the folder `aspeed/`.\n \n## Usage\n\nWe provide under `scripts` a command-line interface for AutoFolio.\nTo get an overview over all options of AutoFolio, simply run:\n\n`python3 scripts/autofolio --help`\n\nWe provide some examples in `examples/`\n\n### Input Formats \n\nAutoFolio reads two input formats: CSV and [ASlib](www.aslib.net).\nThe CSV format is easier for new users but has some limitations to express all kind of input data.\nThe ASlib format has a higher expressiveness -- please see [www.aslib.net](www.aslib.net) for all details on this input format.\n\nFor the CSV format, simply two files are required.\nOne file with the performance data of each algorithm on each instance (each row an instance, and each column an algorithm).\nAnd another file with the instance features for each instance (each row an instance and each column an feature).\nAll other meta-data (such as runtime cutoff) has to be specified by command line options (see `python3 scripts/autofolio --help`).\n\n### Configuration file\n\nA YAML configuration file can be given to control some of the internal AutoFolio\nbehavior. It is given with the `--config` option. \n\nThe recognized options and their types are as follows.\n\n* `wallclock_limit`. The amount of time (in seconds) for optimizing \n  hyperparameters. Type: integer. Default: 300 seconds --- should be increased!\n  \n#### Feature groups\n  \n* `allowed_feature_groups`. A list of the feature groups to consider for \n  prediction. This must match those specified in the ASlib scenario. Type: list\n  of strings. Default: all feature sets are allowed.\n\n#### Preprocessing\n\n* `pca`. Whether to include PCA as a choice for preprocessing. Type: Boolean. Default: True.\n\n* `impute`. Whether missing value imputation is a choice for preprocessing. Type: Boolean. Default: True.\n\n* `scale`. Whether z-score scaling is a choice for preprocessing. Type: Boolean. Default: True.\n\n#### Presolving\n\n* `presolve`. Whether to use a presolver. Type: Boolean. Default: True.\n\n#### Algorithm selection model classes\n\n* `random_forest_classifier`. Whether the random forest classifier is a model class choice. Type: Boolean. Default: True.\n\n* `xgboost_classifier`. Whether the XGBoost classifier is a model class choice. Type: Boolean. Default: True.\n\n* `random_forest_regressor`. Whether the random forest regressor is a model class choice. Type: Boolean. Default: True.\n\n### Cross-Validation Mode\n\nThe default mode of AutoFolio is running a 10-fold cross-validation to estimate the performance of AutoFolio.\n\n### \"Outer\" Cross-Validation Mode\n\n\"Outer\" cross-validation again uses a 10-fold cross-validation scheme to\nevaluate AutoFolio; in this case, though, the subset for testing is not at all\nseen by AutoFolio during training. Internally, the nine training folds are\nfurther use in an \"inner\" cross-validation to avoid overfitting.\n\nThe `--outer-cv` flag indicates to use this mode. For example:\n\n```\npython3 scripts/autofolio -s examples/asp-aslib/data/ --outer-cv\n\n```\n#### Saving the outer cross-validation choices\n\nThe learned model and solver choices for each instance can be saved using the\n`--out-template` option. If given, the fit model and solver choices will be\nsaved to this location. The string is considered a template. \"${fold}\" will be \nreplaced with the outer cv fold, and \"${type}\" will be replaced with the \nappropriate file extension, \"pkl\" for the models and \"csv\" for the solver \nchoices. See string.Template for more details about valid tempaltes.\n\n**N.B.** In many shells (such as bash), it is necessary to put the template in \nsingle quotes to avoid shell replacement in the template. (Double quotes will\nnot typically work.)\n\n```\npython3 scripts/autofolio -s examples/asp-aslib/data/ --outer-cv --out-template 'asp.fold-${fold}.${type}'\n\n```\n#### Parallelizing the outer cross-validation\n\nOptionally, only a single \"outer\" cv fold can be run. Presumably, this is used\nto parallelize the outer cv calls across a cluster. The `--outer-cv-fold` option\nspecifies which fold is used. Typically, this option would be combined with\n`--out-template`, and the results would be combined in post-processing.\n\n**N.B.** This number should range from 1 to 10 (not 0 to 9).\n\n```\npython3 scripts/autofolio -s examples/asp-aslib/data/ --outer-cv --outer-cv-fold 1 --out-template 'asp.fold-${fold}.${type}'\n```\n\n\n### Prediction Mode\n\nIf you want to use AutoFolio to predict for instances not represented in the given data,\nyou need to train AutoFolio save its internal state to disk (use `python3 scripts/autofolio --save [filename]`).\nTo predict on a new instance,\nplease run\n\n`python3 scripts/autofolio --load [filename] --feature_vec \"[space-separated feature vector]\"`\n\nPlease note that the quotes around the feature vector are important.\n\n### Self-Tuning Mode\n\nTo use algorithm configuration to optimize the performance of AutoFolio please use the option `--tune`. \n\n## Reference\n\n[JAIR Journal Article](http://aad.informatik.uni-freiburg.de/papers/15-JAIR-Autofolio.pdf)\n\n@ARTICLE{lindauer-jair15a,\n  author    = {M. Lindauer and H. Hoos and F. Hutter and T. Schaub},\n  title     = {AutoFolio: An automatically configured Algorithm Selector},\n  volume    = {53},\n  journal   = {Journal of Artificial Intelligence Research},\n  year      = {2015},\n  pages     = {745-778}\n}\n\n## Contact\n\nMarius Lindauer: lindauer@cs.uni-freiburg.de\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautoml%2Fautofolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautoml%2Fautofolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautoml%2Fautofolio/lists"}