{"id":28530175,"url":"https://github.com/simonprovost/auto-sklong","last_synced_at":"2025-10-15T09:21:05.113Z","repository":{"id":248130721,"uuid":"741104945","full_name":"simonprovost/Auto-Sklong","owner":"simonprovost","description":"☂️ Auto-Scikit-Longitudinal (Auto-Sklong) is an automated machine learning (AutoML) library designed to analyse longitudinal data (Classification tasks focussed as of today) using various search methods. Namely, Bayesian Optimisation via SMAC3, Asynchronous Successive Halving, Evolutionary Algorithms, and Random Search via GAMA","archived":false,"fork":false,"pushed_at":"2025-01-15T20:43:12.000Z","size":14100,"stargazers_count":22,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T14:16:54.792Z","etag":null,"topics":["automl","classification","longitudinal","machine-learning","repeated-measurements","scikit","sklong","supervised-learning"],"latest_commit_sha":null,"homepage":"https://simonprovost.github.io/Auto-Sklong/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonprovost.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"code_of_conduct.md","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":"2024-01-09T17:51:03.000Z","updated_at":"2025-05-28T18:42:55.000Z","dependencies_parsed_at":"2025-04-12T03:53:46.879Z","dependency_job_id":"6a24f824-9ece-4e37-9f7b-fdd4b1bcc89d","html_url":"https://github.com/simonprovost/Auto-Sklong","commit_stats":null,"previous_names":["simonprovost/auto-sklong"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/simonprovost/Auto-Sklong","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonprovost%2FAuto-Sklong","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonprovost%2FAuto-Sklong/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonprovost%2FAuto-Sklong/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonprovost%2FAuto-Sklong/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonprovost","download_url":"https://codeload.github.com/simonprovost/Auto-Sklong/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonprovost%2FAuto-Sklong/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264042754,"owners_count":23548443,"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","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","classification","longitudinal","machine-learning","repeated-measurements","scikit","sklong","supervised-learning"],"created_at":"2025-06-09T14:13:42.930Z","updated_at":"2025-10-15T09:21:05.085Z","avatar_url":"https://github.com/simonprovost.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--suppress HtmlDeprecatedAttribute --\u003e\n\u003cdiv align=\"center\"\u003e\n   \u003cp align=\"center\"\u003e\n   \u003ch1 align=\"center\"\u003e\n      \u003cbr\u003e\n      \u003ca href=\"https://i.imgur.com/Qu8fIfA.png\"\u003e\n         \u003cimg src=\"https://i.imgur.com/Qu8fIfA.png\" alt=\"Auto-Sklong\" width=\"200\"\u003e\n      \u003c/a\u003e\n      \u003cbr\u003e\n      Auto-Sklong\n      \u003cbr\u003e\n   \u003c/h1\u003e\n   \u003ch4 align=\"center\"\u003eAn Automated Machine Learning library for longitudinal classification built on GAMA and Scikit-longitudinal\u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003c!-- All badges in a row --\u003e\n\n\u003ca href=\"https://pytest.org/\"\u003e\n   \u003cimg alt=\"pytest\" src=\"https://img.shields.io/badge/pytest-passing-green?style=for-the-badge\u0026logo=pytest\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.pylint.org/\"\u003e\n   \u003cimg alt=\"pylint\" src=\"https://img.shields.io/badge/pylint-checked-blue?style=for-the-badge\u0026logo=python\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://pre-commit.com/\"\u003e\n   \u003cimg alt=\"pre--commit\" src=\"https://img.shields.io/badge/pre--commit-checked-blue?style=for-the-badge\u0026logo=python\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\n   \u003cimg alt=\"black\" src=\"https://img.shields.io/badge/black-formatted-black?style=for-the-badge\u0026logo=python\"\u003e\n\u003c/a\u003e\n\n\u003cimg src=\"https://img.shields.io/badge/Jupyter-F37626?style=for-the-badge\u0026logo=jupyter\u0026logoColor=white\" alt=\"Jupyter\"\u003e\n\u003cimg src=\"https://img.shields.io/static/v1?label=RUFF\u0026message=compliant\u0026color=9C27B0\u0026style=for-the-badge\u0026logo=RUFF\u0026logoColor=white\" alt=\"RUFF compliant\"\u003e\n\u003cimg src=\"https://img.shields.io/static/v1?label=UV\u0026message=compliant\u0026color=2196F3\u0026style=for-the-badge\u0026logo=UV\u0026logoColor=white\" alt=\"UV compliant\"\u003e\n\u003ca href=\"https://codecov.io/gh/simonprovost/Auto-Sklong\"\u003e\n   \u003cimg alt=\"Codecov\" src=\"https://img.shields.io/badge/coverage-76%25-brightgreen.svg?style=for-the-badge\u0026logo=appveyor\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/openml-labs/gama\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Fork-GAMA-green?labelColor=Purple\u0026style=for-the-badge\"\n        alt=\"Fork GAMA\" /\u003e\n\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/static/v1?label=Python\u0026message=3.9%2B%3C3.10\u0026color=3776AB\u0026style=for-the-badge\u0026logo=python\u0026logoColor=white\" alt=\"Python 3.9+ \u003c 3.10\"\u003e\n\n\u003c/div\u003e\n\n---\n\n## \u003ca id=\"about-the-project\"\u003e\u003c/a\u003e💡 About The Project\n\n`Auto-Scikit-Longitudinal` (Auto-Sklong) is an Automated Machine Learning (AutoML) library, developed upon the\n[`General Machine Learning Assistant (GAMA)`](https://openml-labs.github.io/gama/master/index.html#) framework, \nintroducing a brand-new [`search space`](https://auto-sklong.readthedocs.io/en/latest/tutorials/search_space/) leveraging both\n[`Scikit-Longitudinal`](https://scikit-longitudinal.readthedocs.io/latest/) and [`Scikit-learn`](https://scikit-learn.org/stable/) \nmodels to tackle the Longitudinal machine learning classification tasks.\n\n**Wait, what is Longitudinal Data — In layman's terms ?**\n\nLongitudinal data is a \"time-lapse\" snapshot of the same subject, entity, or group tracked over time-periods,\nsimilar to checking in on patients to see how they change. For instance, doctors may monitor a patient's blood pressure,\nweight, and cholesterol every year for a decade to identify health trends or risk factors. This data is more useful for\npredicting future results than a one-time survey because it captures evolution, patterns, and cause-effect throughout\ntime.\n\n**Not enough?**\n\n* For more scientific details, you can refer to our [paper](https://doi.org/10.1109/BIBM62325.2024.10821737) published by `IEEE` in the [IEEE International Conference on Bioinformatics and Biomedicine (BIBM), 2024 Edition](https://ieeexplore.ieee.org/xpl/conhome/10821710/proceeding).\n* `Auto-Sklong` comes with various search methods to explore the [`search space`](https://auto-sklong.readthedocs.io/en/latest/tutorials/search_space/) introduced, such as `Bayesian Optimisation`.  For more details, visit the [official documentation](https://auto-sklong.readthedocs.io/en/latest/).\n\n---\n\n## \u003ca id=\"installation\"\u003e\u003c/a\u003e🛠️ Installation\n\n\u003e [!NOTE]\n\u003e Want to use `Jupyter Notebook`, `Marimo`, `Google Colab`, or `JupyterLab`?\n\u003e Head to the `Getting Started` section of the documentation for full instructions! 🎉\n\nTo install Auto-Sklong:\n\n1. ✅ Install the latest version:\n   ```bash\n   pip install auto-sklong\n   ```\n\n   To install a specific version:\n   ```bash\n   pip install auto-sklong==0.0.1\n   ```\n\n\u003e [!CAUTION]\n\u003e `Auto-Sklong` is currently compatible with Python versions `3.9` only. \n\u003e Ensure you have this version installed before proceeding. \n\u003e \n\u003e This limitation stems from the `Deep Forest` dependency. \n\u003e Follow updates on [this GitHub issue](https://github.com/LAMDA-NJU/Deep-Forest/issues/124).\n\u003e \n\u003e If you encounter errors, explore the `installation` section in the `Getting Started` of the documentation.\n\u003e If issues persist, open a GitHub issue.\n\n---\n\n## \u003ca id=\"getting-started\"\u003e\u003c/a\u003e🚀 Getting Started\n\nHere's how to run AutoML on longitudinal data with Auto-Sklong:\n\n```python\nfrom sklearn.metrics import classification_report\nfrom scikit_longitudinal.data_preparation import LongitudinalDataset\nfrom gama.GamaLongitudinalClassifier import GamaLongitudinalClassifier\n\n# Load your dataset (replace 'stroke.csv' with your actual dataset path)\ndataset = LongitudinalDataset('./stroke.csv')\n\n# Set up the target column and split the data (replace 'class_stroke_wave_4' with your target)\ndataset.load_data_target_train_test_split(\n    target_column=\"class_stroke_wave_4\",\n)\n\n# Set up feature groups (temporal dependencies)\n# Use a pre-set for ELSA data or define manually (See docs for details)\ndataset.setup_features_group(input_data=\"elsa\")\n\n# Initialise the AutoML system\nautoml = GamaLongitudinalClassifier(\n    features_group=dataset.feature_groups(),\n    non_longitudinal_features=dataset.non_longitudinal_features(),\n    feature_list_names=dataset.data.columns.tolist(),\n    max_total_time=3600  # Adjust time as needed (in seconds)\n)\n\n# Fit the AutoML system\nautoml.fit(dataset.X_train, dataset.y_train)\n\n# Make predictions\ny_pred = automl.predict(dataset.X_test)\n\n# Print the classification report\nprint(classification_report(dataset.y_test, y_pred))\n```\n\nMore detailed examples and tutorials can be found in the [documentation](https://auto-sklong.readthedocs.io/en/latest/tutorials/overview/)!\n\n---\n\n## \u003ca id=\"citation\"\u003e\u003c/a\u003e📝 How to Cite\n\nIf you use Auto-Sklong in your research, please cite our paper:\n\n```bibtex\n@INPROCEEDINGS{10821737,\n  author={Provost, Simon and Freitas, Alex A.},\n  booktitle={2024 IEEE International Conference on Bioinformatics and Biomedicine (BIBM)}, \n  title={Auto-Sklong: A New AutoML System for Longitudinal Classification}, \n  year={2024},\n  volume={},\n  number={},\n  pages={2021-2028},\n  keywords={Pipelines;Optimization;Predictive models;Classification algorithms;Conferences;Bioinformatics;Biomedical computing;Automated Machine Learning;AutoML;Longitudinal Classification;Scikit-Longitudinal;GAMA},\n  doi={10.1109/BIBM62325.2024.10821737}}\n```\n\n## 🚀 **What's New Compared to GAMA?**\n\nWe enhanced [@PGijsbers'](https://github.com/PGijsbers) open-source `GAMA` initiative by introducing a brand-new search space designed specifically for tackling longitudinal classification problems. This search space is powered by our custom library, [`Scikit-Longitudinal` (Sklong)](https://github.com/simonprovost/scikit-longitudinal), enabling Combined Algorithm Selection and Hyperparameter Optimization (CASH Optimization).\n\nUnlike `GAMA` or other existing AutoML libraries, `Auto-Sklong` offers out-of-the-box support for \nlongitudinal classification tasks—a capability not previously available. \n\n#### Search Space Viz.:\nTo better understand our proposed search space, refer to the visualisation below (read from left to right, each step being one new component to a final pipeline candidate configuration):\n\n[![Search Space Visualization](https://i.imgur.com/advUOnU.png)](https://i.imgur.com/advUOnU.png)\n\nWhile `GAMA` offers some configurability for search spaces, we improved its functionality to better suit our needs. You can find the details of our contributions in the following pull requests:\n- [ConfigSpace Technology Integration for Enhanced GAMA Configuration and Management 🥇](https://github.com/openml-labs/gama/pull/210)\n- [Search Methods Enhancements to Avoid Duplicate Evaluated Pipelines 🥈](https://github.com/openml-labs/gama/pull/211)\n- [SMAC3 Bayesian Optimisation Integration 🆕](https://github.com/openml-labs/gama/pull/212)\n\n## \u003ca id=\"license\"\u003e\u003c/a\u003e🔐 License\n\nAuto-Sklong is licensed under the [MIT License](./LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonprovost%2Fauto-sklong","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonprovost%2Fauto-sklong","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonprovost%2Fauto-sklong/lists"}