{"id":14970738,"url":"https://github.com/sirbradflies/sibyl","last_synced_at":"2026-03-04T14:31:35.463Z","repository":{"id":57467016,"uuid":"378371389","full_name":"sirbradflies/Sibyl","owner":"sirbradflies","description":null,"archived":false,"fork":false,"pushed_at":"2022-01-30T03:17:38.000Z","size":43,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-04T02:17:35.299Z","etag":null,"topics":["ai","keras","ml","pipeline"],"latest_commit_sha":null,"homepage":null,"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/sirbradflies.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}},"created_at":"2021-06-19T09:16:20.000Z","updated_at":"2022-01-03T12:40:12.000Z","dependencies_parsed_at":"2022-09-10T02:01:09.254Z","dependency_job_id":null,"html_url":"https://github.com/sirbradflies/Sibyl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sirbradflies%2FSibyl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sirbradflies%2FSibyl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sirbradflies%2FSibyl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sirbradflies%2FSibyl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sirbradflies","download_url":"https://codeload.github.com/sirbradflies/Sibyl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240221317,"owners_count":19767442,"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":["ai","keras","ml","pipeline"],"created_at":"2024-09-24T13:44:04.289Z","updated_at":"2025-11-13T14:03:43.755Z","avatar_url":"https://github.com/sirbradflies.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sibyl-AI\n##### Provided under MIT License by Francesco Baldisserri\n*Note: this library may be subtly broken or buggy. The code is released under\nthe MIT License – please take the following message to heart:*\n\u003e THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\u003e \n## Benefits\n- Sibyl is a simple wrapper of SciKit Learn Pipeline\n- The default pipeline steps can be used as a simple AutoML tool\n- The package includes Keras and Catboost serializable wrappers to be able to use these models with the Pipeline and save them as any other SKLearn estimator\n- The default pipeline steps include an OmniEncoder which recognizes the feature types and already transforms them with the most appropriate encoding\n\n## Getting Started\nThis README is documentation on the syntax of the Sibyl module in this repository. See function docstrings for full syntax details.  \n**This module attempts to add features to SKLearn Pipeline module, but in order to use it\nto its full potential, you should familiarize yourself with the official SKLearn documentation.**\n\n- https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html\n\n- You may manually install the project or use ```pip```:\n```python\npip install sibyl-ai\n#or\npip install git+git://github.com/sirbradflies/Sibyl.git\n```\n\n### Sibyl as AutoML\nSibyl framework can be used with its default steps as a simple AutoML pipeline.\nThe standard steps are:\n1. (\"omni\", OmniEncoder()) (encoder for all features with simple heuristic to recognize continuous, discrete and categorial variables)\n2. (\"pca\", PCA())\n3. (\"model\", KerasDenseRegressor()) or (\"model\", KerasDenseClassifier()) depending on the predictor pipeline's task\n\nThe score used is r2 for the Regressor and accuracy for the Classifier\n\n```python\nfrom sklearn import datasets\nfrom sklearn.model_selection import train_test_split\nfrom sibyl import predictor as pred\n\nX, y = datasets.load_boston(return_X_y=True)  # No encoding needed since OmniEncoder recognizes discrete, continuous and categoricals\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\npredrgr = pred.SibylRegressor()\npredrgr.search(X_train, y_train)  # RandomizedGridSearchCV available but also fit method is available\nprint(f\"Test score: {predrgr.score(X_test, y_test):.4f}\")\n```\n\n### Sibyl for custom pipelines\nThe Sibyl framework can be also used to setup a custom pipeline that includes all features of the SKLearn pipeline but also embeds RandomizedGridSearch and Keras and CatBoost models that can be easily serialized and saved.\n\nHere's a custom pipeline for MNIST digit classification\n\n```python\nfrom sklearn import datasets\nfrom sklearn.decomposition import PCA\nfrom sklearn.model_selection import train_test_split\n\nfrom sibyl import predictor as pred\nfrom sibyl.models import kerasmodels as kd\n\nSTEPS = [(\"preprocessing\", PCA()),\n         (\"model\", kd.KerasDenseClassifier(n_iter_no_change=1,\n                                           epochs=1000))]\n\nSEARCH_PARAMS = {\"preprocessing__n_components\": [None, 0.99, 0.90],\n                 \"model__units\": [(64,), (64, 64), (64, 64, 64)],\n                 \"model__batch_norm\": [True, False]}\n\nX, y = datasets.fetch_openml('mnist_784', version=1, return_X_y=True)\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\npredclf = pred.SibylClassifier(steps=STEPS)\npredclf.search(X_train, y_train,\n               params=SEARCH_PARAMS)  # RandomizedGridSearchCV available but also fit method is available\nprint(f\"Test score: {predclf.score(X_test, y_test):.4f}\")\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsirbradflies%2Fsibyl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsirbradflies%2Fsibyl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsirbradflies%2Fsibyl/lists"}