{"id":25369969,"url":"https://github.com/tschechlovdev/automl4clust","last_synced_at":"2026-05-15T18:32:49.174Z","repository":{"id":121681553,"uuid":"302546192","full_name":"tschechlovdev/Automl4Clust","owner":"tschechlovdev","description":"Implementation of \"AutoML4Clust: Efficient AutoML for Clustering Analyses\", published at EDBT 2021.","archived":false,"fork":false,"pushed_at":"2020-10-13T10:13:08.000Z","size":40,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T02:44:08.172Z","etag":null,"topics":["automl","clustering","paper","python","scikit-learn"],"latest_commit_sha":null,"homepage":"https://openproceedings.org/2021/conf/edbt/p87.pdf","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tschechlovdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-09T05:55:22.000Z","updated_at":"2024-10-17T13:18:38.000Z","dependencies_parsed_at":"2023-05-13T12:00:29.687Z","dependency_job_id":null,"html_url":"https://github.com/tschechlovdev/Automl4Clust","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tschechlovdev/Automl4Clust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschechlovdev%2FAutoml4Clust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschechlovdev%2FAutoml4Clust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschechlovdev%2FAutoml4Clust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschechlovdev%2FAutoml4Clust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tschechlovdev","download_url":"https://codeload.github.com/tschechlovdev/Automl4Clust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschechlovdev%2FAutoml4Clust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automl","clustering","paper","python","scikit-learn"],"created_at":"2025-02-15T01:38:25.169Z","updated_at":"2026-05-15T18:32:49.158Z","avatar_url":"https://github.com/tschechlovdev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AutoML4Clust\n\nRepository for the prototypical implementation of AutoML4Clust.\nIt implements implements different instantiations of our proposed AutoML4Clust.\nTo this end, we use different state-of-the art optimizers from existing AutoML systems and apply them to the unsupervised task of clustering.\nFurthermore, we implemented meta-learning for the unsupervised task of clustering to warmstart the optimizers.\nIn this prototype, we focus on k-center algorithms.\nFurthermore, other clustering algorithms, e.g., from other clustering families, can be seamlessly added.\n\n### Prerequisites\n\nTo use the AutoML4Clust API, you require Python 3.6 and a Linux environment with Ubuntu \u003e= 16.04.\nYou can find and install the required libraries from the `requirements.txt` file.\n \n### Optimizers\nWe used four state-of-the-art optimizers from existing AutoML systems with the following implementations:\n- Random Search: [scikit-optimize](https://scikit-optimize.github.io/stable/)\n- Bayes optimization with Random Forests: [SMAC](https://github.com/automl/SMAC3)\n- Hyperband and BOHB: [hpbandster](https://github.com/automl/HpBandSter)\n\nFor warmstarting Hyperband and BOHB we used the code provided by the BOHB authors [here](https://github.com/automl/HpBandSter/issues/71). \n\n### Clustering algorithms and metrics\n\nFor the clustering algorithms and metrics, we rely on the prominent ml-library [scikit-learn](https://scikit-learn.org/stable/modules/clustering.html).\nTo this end, we used the k-Means, MiniBatchK-Means, GMM and k-Medoids algorithms, which rely on different objective functions, thus achieving different clustering results.\nFor the k-Medoids algorithm, we used [scikit-learn extra](https://scikit-learn-extra.readthedocs.io/en/latest/generated/sklearn_extra.cluster.KMedoids.html)\nimplementation.\n\nWe also used the three internal metrics that are implemented in scikit-learn for clustering, i.e.,\nthe Calinski-Harabasz, Davies-Bouldin Index and the Silhouette.\n\n### Simple API Example\n\nThe API is very simple to use.\nIn the following, we show examples on how to run the API on a synthetically generated dataset.\nPer default, our API uses the Calinski-Harabasz metric, a budget of `n_loops=60`, the four above-mentioned clustering algorithms \nand a range for the hyperparameter k of `(2, n/10)`, where `n` is the number of entities in the dataset.\nHowever, in the `Examples` directory you can find examples on how to use another (i) configuration space, \n(ii) clustering metric, (iii) budget, and (iv) how to use warmstarting.\n\n````python\nfrom sklearn.datasets import make_blobs\n\nfrom Optimizer.Optimizer import SMACOptimizer, RandomOptimizer, BOHBOptimizer, HyperBandOptimizer\n\n# Create a testing data set for all examples\nX, y = make_blobs(n_samples=1000, n_features=10)\n\n# optimizers that can be used in our implementation\noptimizers = [RandomOptimizer, SMACOptimizer, HyperBandOptimizer, BOHBOptimizer]\n\n# We use Hyperband in our examples\noptimizer = HyperBandOptimizer\n\n# Instantiating AutoML4Clust on the dataset and getting the best found configuration\nautoml_four_clust_instance = optimizer(dataset=X)\nresult = automl_four_clust_instance.optimize()\nbest_configuration = automl_four_clust_instance.get_best_configuration()\n````\n\nSince the API is simple to use, it can be easily integrated into existing analysis pipelines.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftschechlovdev%2Fautoml4clust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftschechlovdev%2Fautoml4clust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftschechlovdev%2Fautoml4clust/lists"}