{"id":13633373,"url":"https://github.com/blobcity/autoai","last_synced_at":"2025-12-14T11:00:00.262Z","repository":{"id":40487253,"uuid":"401691119","full_name":"blobcity/autoai","owner":"blobcity","description":"Python based framework for Automatic AI for Regression and Classification over numerical data. Performs model search, hyper-parameter tuning, and high-quality Jupyter Notebook code generation.","archived":false,"fork":false,"pushed_at":"2025-03-25T01:40:10.000Z","size":9510,"stargazers_count":183,"open_issues_count":9,"forks_count":45,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-27T05:44:00.000Z","etag":null,"topics":["ai","autoai","automl","codegen","deep-learning","machine-learning","ml","python"],"latest_commit_sha":null,"homepage":"","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/blobcity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2021-08-31T12:15:41.000Z","updated_at":"2025-10-07T04:13:33.000Z","dependencies_parsed_at":"2024-01-07T03:51:33.590Z","dependency_job_id":"7b91daaa-124b-4965-975d-aa6142205567","html_url":"https://github.com/blobcity/autoai","commit_stats":{"total_commits":305,"total_committers":27,"mean_commits":"11.296296296296296","dds":0.5770491803278688,"last_synced_commit":"7934e16b497398e303101964c5c7c94617093182"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/blobcity/autoai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blobcity%2Fautoai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blobcity%2Fautoai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blobcity%2Fautoai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blobcity%2Fautoai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blobcity","download_url":"https://codeload.github.com/blobcity/autoai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blobcity%2Fautoai/sbom","scorecard":{"id":243618,"data":{"date":"2025-08-11","repo":{"name":"github.com/blobcity/autoai","commit":"87b0aa2bb0de6bfe1c36b14b7403670c029e6e84"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/blobcity/autoai/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/blobcity/autoai/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/blobcity/autoai/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/blobcity/autoai/codeql-analysis.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-231 / GHSA-2586-f3p4-hq84","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T07:05:50.166Z","repository_id":40487253,"created_at":"2025-08-17T07:05:50.166Z","updated_at":"2025-08-17T07:05:50.166Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27726908,"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-12-14T02:00:11.348Z","response_time":56,"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":["ai","autoai","automl","codegen","deep-learning","machine-learning","ml","python"],"created_at":"2024-08-01T23:00:35.671Z","updated_at":"2025-12-14T11:00:00.241Z","avatar_url":"https://github.com/blobcity.png","language":"Python","funding_links":[],"categories":["Profiling","Scheduling","AutoML","Tools and projects"],"sub_categories":["Profiling","LLM"],"readme":"\u003ca href=\"https://blobcity.com\"\u003e\u003cimg src=\"https://cdn.blobcity.com/assets/blobcity-logo.svg\" style=\"width: 40%\"/\u003e\u003c/a\u003e\n\n[![PyPI version](https://badge.fury.io/py/blobcity.svg)](https://badge.fury.io/py/blobcity)\n[![Downloads](https://pepy.tech/badge/blobcity)](https://pepy.tech/project/blobcity)\n[![Python](https://shields.io/pypi/pyversions/blobcity)](https://pypi.org/project/blobcity/)\n[![License](https://shields.io/pypi/l/blobcity)](https://pypi.org/project/blobcity/)\n\n[![Contributors](https://shields.io/github/contributors/blobcity/autoai)](https://github.com/blobcity/autoai)\n[![Commit Activity](https://shields.io/github/commit-activity/m/blobcity/autoai)](https://github.com/blobcity/autoai)\n[![Last Commit](https://shields.io/github/last-commit/blobcity/autoai)](https://github.com/blobcity/autoai)\n[![Slack](https://shields.io/badge/join%20discussion-slack-orange)](https://pix.blobcity.com/E2Bepr4w)\n\n[![GitHub Stars](https://shields.io/github/stars/blobcity?style=social)](https://github.com/blobcity)\n[![Twitter](https://shields.io/twitter/follow/blobcity?label=Follow)](https://twitter.com/blobcity)\n\n\n# BlobCity AutoAI\nA framework to find the best performing AI/ML model for any AI problem. Works for Classification and Regression type of problems on numerical data. AutoAI makes AI easy and accessible to everyone. It not only trains the best-performing model but also exports high-quality code for using the trained model.\n\nThe framework is currently in beta release, with active development being still in progress. Please report any issues you encounter.\n\n[![Issues](https://shields.io/github/issues/blobcity/autoai)](https://github.com/blobcity/autoai/issues)\n\n\n# Getting Started\n``` shell\npip install blobcity\n```\n\n``` Python\nimport blobcity as bc\nmodel = bc.train(file=\"data.csv\", target=\"Y_column\")\nmodel.spill(\"my_code.py\")\n```\n`Y_column` is the name of the target column. The column must be present within the data provided. \n\nAutomatic inference of Regression / Classification is supported by the framework.\n\nData input formats supported include:\n1. Local CSV / XLSX file\n2. URL to a CSV / XLSX file\n3. Pandas DataFrame \n\n``` Python\nmodel = bc.train(file=\"data.csv\", target=\"Y_column\") #local file\n```\n\n``` Python\nmodel = bc.train(file=\"https://example.com/data.csv\", target=\"Y_column\") #url\n```\n\n``` Python\nmodel = bc.train(df=my_df, target=\"Y_column\") #DataFrame\n```\n\n# Pre-processing\nThe framework has built-in support for several data pre-processing techniques, such as imputing missing values, column encoding, and data scaling. \n\nPre-processing is carried out automatically on train data. The predict function carries out the same pre-processing on new data. The user is not required to be concerned with the pre-processing choices of the framework. \n\nOne can view the pre-processing methods used on the data by exporting the entire model configuration to a YAML file. Check the section below on \"Exporting to YAML.\"\n\n# Feature Selection\n```Python\nmodel.features() #prints the features selected by the model\n```\n\n```Shell\n['Present_Price',\n 'Vehicle_Age',\n 'Fuel_Type_CNG',\n 'Fuel_Type_Diesel',\n 'Fuel_Type_Petrol',\n 'Seller_Type_Dealer',\n 'Seller_Type_Individual',\n 'Transmission_Automatic',\n 'Transmission_Manual']\n ```\n\nAutoAI automatically performs a feature selection on input data. All features (except target) are potential candidates for the X input.  \n\nAutoAI will automatically remove ID / Primary-key columns. \n\nThis does not guarantee that all specified features will be used in the final model. The framework will perform an automated feature selection from amongst these features. This only guarantees that other features if present in the data will not be considered. \n\nAutoAI ignores features that have a low importance to the effective output. The feature importance plot can be viewed. \n\n```Python\nmodel.plot_feature_importance() #shows a feature importance graph\n```\n\n![Feature Importance Plot](https://cdn.blobcity.com/img/autoai-feature-importance-example.png)\n\nThere might be scenarios where you want to explicitely exclude some columns, or only use a subset of columns in the training. Manually specify the features to be used. AutoAI will still perform a feature selection within the list of features provided to improve effective model accuracy. \n\n``` Python\nmodel = bc.train(file=\"data.csv\", target=\"Y_value\", features=[\"col1\", \"col2\", \"col3\"])\n```\n\n# Model Search, Train \u0026 Hyper-parameter Tuning\nModel search, train and hyper-parameter tuning is fully automatic. It is a 3 step process that tests your data across various AI/ML models. It finds models with high success tendency, and performs a hyper-parameter tuning to find you the best possible result. \n\n[Regression Models Library](https://github.com/blobcity/autoai/blob/main/blobcity/config/regressor_config.py)\n\n[Classification Models Library](https://github.com/blobcity/autoai/blob/main/blobcity/config/classifier_config.py)\n\n\n# Code Generation\nHigh-quality code generation is why most Data Scientists choose AutoAI. The `spill` function generates the model code with exhaustive documentation. scikit-learn models export with training code included. TensorFlow and other DNN models produce only the test / final use code. \n\n![AutoAI Generated Code Example](https://cdn.blobcity.com/img/autoai-code-gen-example.gif)\n\n\nCode generation is supported in `ipynb` and `py` file formats, with options to enable or disable detailed documentation exports.\n\n``` Python\nmodel.spill(\"my_code.ipynb\"); #produces Jupyter Notebook file with full markdown docs\n```\n``` Python\nmodel.spill(\"my_code.py\") #produces python code with minimal docs\n```\n``` Python\nmodel.spill(\"my_code.py\", docs=True) #python code with full docs\n```\n``` Python\nmodel.spill(\"my_code.ipynb\", docs=False) #Notebook file with minimal markdown\n```\n\n# Predictions\nUse a trained model to generate predictions on new data. \n\n```Python\nprediction = model.predict(file=\"unseen_data.csv\")\n```\n\nAll required features must be present in the `unseen_data.csv` file. Consider checking the results of the automatic feature selection to know the list of features needed by the `predict` function.\n\n\n# Stats \u0026 Accuracy\n```Python\nmodel.plot_prediction()\n```\n\nThe function is shared across Regression and Classification problems. It plots a relevant chart to assess efficiency of training. \n\n### Actual v/s Predicted Plot (for Regression)\n![Actual v/s Predicted Plot](https://cdn.blobcity.com/img/autoai-regression-plot-full.png)\n\nPlotting only first `100` rows. You can specify `-100` to plot last 100 rows.\n```Python\nmodel.plot_prediction(100)\n```\n![Actual v/s Predicted Plot first 100](https://cdn.blobcity.com/img/autoai-regression-plot-100.png)\n\n\n### Confusion Matrix (for Classification)\n```Python\nmodel.plot_prediction()\n```\n\n![AutoAI Generated Code Example](https://cdn.blobcity.com/img/autoai-confusion-matrix.png)\n\n### Numercial Stats \u0026 Model Description\n``` Python\nmodel.summary()\n```\nPrint model configuration/Hyper Parameter tuning along the key model static parameters, such as Precision, Recall, F1-Score,etc. The parameters change based on the type of AutoAI problem. It also provide information on different data preprocessing steps applied during the complete process.\n\n# Persistence\n``` Python\nmodel.save('./my_model.pkl')\n```\n```Python\nmodel = bc.load('./my_model.pkl')\n```\n\nYou can save a trained model, and load it in the future to generate predictions. \n\n# Accelerated Training\nLeverage BlobCity AI Cloud for fast training on large datasets. Reasonable cloud infrastructure included for free.\n\n[![BlobCity AI Cloud](https://shields.io/badge/Run%20On-BlobCity-orange)](https://blobcity.com)\n[![CPU](https://shields.io/badge/CPU-Free-blue)](https://blobcity.com)\n[![GPU](https://shields.io/badge/GPU-%2425%2Fmonth-green)](https://blobcity.com)\n\n\n# Features and Roadmap\n- [x] Numercial data Classification and Regression\n- [x] Automatic feature selection\n- [x] Code generation\n- [x] Neural Networks \u0026 Deep Learning\n\n# Upcoming Releases\n- [ ] ChatGPT API integration\n- [ ] Natural Language Processing\n- [ ] Text to Audio / Audio to Text\n- [ ] Generative AI using GAN (train your own model)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblobcity%2Fautoai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblobcity%2Fautoai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblobcity%2Fautoai/lists"}