{"id":14977367,"url":"https://github.com/nannyml/nannyml","last_synced_at":"2025-05-14T08:09:41.741Z","repository":{"id":37099126,"uuid":"452328925","full_name":"NannyML/nannyml","owner":"NannyML","description":"nannyml: post-deployment data science in python","archived":false,"fork":false,"pushed_at":"2025-04-22T21:53:19.000Z","size":135697,"stargazers_count":2059,"open_issues_count":5,"forks_count":154,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-05-05T09:36:34.185Z","etag":null,"topics":["data-analysis","data-drift","data-science","deep-learning","jupyter-notebook","machine-learning","machinelearning","ml","mlops","model-monitoring","monitoring","performance-estimation","performance-monitoring","postdeploymentdatascience","python","visualization"],"latest_commit_sha":null,"homepage":"https://www.nannyml.com/","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/NannyML.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-26T15:27:16.000Z","updated_at":"2025-05-03T19:37:00.000Z","dependencies_parsed_at":"2022-07-14T08:09:37.907Z","dependency_job_id":"75c98ff1-eb78-4ec6-8f46-13320b610973","html_url":"https://github.com/NannyML/nannyml","commit_stats":{"total_commits":1146,"total_committers":39,"mean_commits":"29.384615384615383","dds":0.5340314136125655,"last_synced_commit":"9ef90eca30a537c279ff696430bec6097704f9fb"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NannyML%2Fnannyml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NannyML%2Fnannyml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NannyML%2Fnannyml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NannyML%2Fnannyml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NannyML","download_url":"https://codeload.github.com/NannyML/nannyml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101559,"owners_count":22014908,"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":["data-analysis","data-drift","data-science","deep-learning","jupyter-notebook","machine-learning","machinelearning","ml","mlops","model-monitoring","monitoring","performance-estimation","performance-monitoring","postdeploymentdatascience","python","visualization"],"created_at":"2024-09-24T13:55:32.035Z","updated_at":"2025-05-14T08:09:36.725Z","avatar_url":"https://github.com/NannyML.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/media/thumbnail-4.png\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://pypi.org/project/nannyml/\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/v/nannyml.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://anaconda.org/conda-forge/nannyml\"\u003e\n        \u003cimg src=\"https://anaconda.org/conda-forge/nannyml/badges/version.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/nannyml/\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/pyversions/nannyml.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/nannyml/nannyml/actions/workflows/dev.yml\"\u003e\n        \u003cimg src=\"https://github.com/NannyML/nannyml/actions/workflows/dev.yml/badge.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca href='https://nannyml.readthedocs.io/en/main/?badge=main'\u003e\n        \u003cimg src='https://readthedocs.org/projects/nannyml/badge/?version=main' alt='Documentation Status' /\u003e\n    \u003c/a\u003e\n    \u003cimg alt=\"PyPI - License\" src=\"https://img.shields.io/pypi/l/nannyml?color=green\" /\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.producthunt.com/posts/nannyml?utm_source=badge-top-post-badge\u0026utm_medium=badge\u0026utm_souce=badge-nannyml\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=346412\u0026theme=light\u0026period=daily\" alt=\"NannyML - OSS\u0026#0032;Python\u0026#0032;library\u0026#0032;for\u0026#0032;detecting\u0026#0032;silent\u0026#0032;ML\u0026#0032;model\u0026#0032;failure | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\n    \u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003e\n        \u003ca href=\"https://nannyml.com/\"\u003eWebsite\u003c/a\u003e\n        •\n        \u003ca href=\"https://nannyml.readthedocs.io/en/stable/\"\u003eDocs\u003c/a\u003e\n        •\n        \u003ca href=\"https://join.slack.com/t/nannymlbeta/shared_invite/zt-16fvpeddz-HAvTsjNEyC9CE6JXbiM7BQ\"\u003eCommunity Slack\u003c/a\u003e\n    \u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/NannyML/nannyml/blob/main/media/estimate-performance-regression.gif?raw=true\" alt=\"animated\"\u003e\n\u003c/p\u003e\n\n# 💡 What is NannyML?\n\nNannyML is an open-source python library that allows you to **estimate post-deployment model performance** (without access to targets), detect data drift, and intelligently link data drift alerts back to changes in model performance. Built for data scientists, NannyML has an easy-to-use interface, interactive visualizations, is completely model-agnostic and currently supports all tabular use cases, classification and **regression**.\n\nThe core contributors of NannyML have researched and developed multiple novel algorithms for estimating model performance: [confidence-based performance estimation (CBPE)](https://nannyml.readthedocs.io/en/stable/how_it_works/performance_estimation.html#confidence-based-performance-estimation-cbpe) and [direct loss estimation (DLE)](https://nannyml.readthedocs.io/en/stable/how_it_works/performance_estimation.html#direct-loss-estimation-dle).\nThe nansters also invented a new approach to detect [multivariate data drift](https://nannyml.readthedocs.io/en/stable/how_it_works/multivariate_drift.html#data-reconstruction-with-pca) using PCA-based data reconstruction.\n\nIf you like what we are working on, be sure to become a Nanster yourself, join our [community slack](https://join.slack.com/t/nannymlbeta/shared_invite/zt-16fvpeddz-HAvTsjNEyC9CE6JXbiM7BQ) \u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/media/slack.png\" height='15'\u003e and support us with a GitHub \u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/media/github.png\" height='15'\u003e star ⭐.\n\n# ☔ Why use NannyML?\n\nNannyML closes the loop with performance monitoring and post deployment data science, empowering data scientist to quickly understand and **automatically detect silent model failure**. By using NannyML, data scientists can finally maintain complete visibility and trust in their deployed machine learning models.\nAllowing you to have the following benefits:\n\n-   End sleepless nights caused by not knowing your model performance 😴\n-   Analyse data drift and model performance **over time**\n-   Discover the **root cause** to why your models are not performing as expected\n-   **No alert fatigue!** React only when necessary if model performance is impacted\n-   **Painless** setup in any environment\n\n# 🧠 GO DEEP\n\n| NannyML Resources                                                                                               | Description                                                                            |\n| --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |\n| ☎️ **[NannyML 101]**                                                                                            | New to NannyML? Start here!                                                            |\n| 🔮 **[Performance estimation]**                                                                                 | How the magic works.                                                                   |\n| 🌍 **[Real world example]**                                                                                     | Take a look at a real-world example of NannyML.                                        |\n| 🔑 **[Key concepts]**                                                                                           | Glossary of key concepts we use.                                                       |\n| 🔬 **[Technical reference]**                                                                                    | Monitor the performance of your ML models.                                             |\n| 🔎 **[Blog]**                                                                                                   | Thoughts on post-deployment data science from the NannyML team.                        |\n| 📬 **[Newsletter]**                                                                                             | All things post-deployment data science. Subscribe to see the latest papers and blogs. |\n| 💎 **[New in v0.13.0]**                                                                                          | New features, bug fixes.                                                               |\n| 🧑‍💻 **[Contribute]**                                                                                             | How to contribute to the NannyML project and codebase.                                 |\n| \u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/media/slack.png\" height='15'\u003e **[Join slack]** | Need help with your specific use case? Say hi on slack!                                |\n\n[nannyml 101]: https://nannyml.readthedocs.io/en/stable/\n[performance estimation]: https://nannyml.readthedocs.io/en/stable/how_it_works/performance_estimation.html\n[key concepts]: https://nannyml.readthedocs.io/en/stable/glossary.html\n[technical reference]: https://nannyml.readthedocs.io/en/stable/nannyml/modules.html\n[new in v0.13.0]: https://github.com/NannyML/nannyml/releases/latest/\n[real world example]: https://nannyml.readthedocs.io/en/stable/examples/california_housing.html\n[blog]: https://www.nannyml.com/blog\n[newsletter]: https://mailchi.mp/022c62281d13/postdeploymentnewsletter\n[join slack]: https://join.slack.com/t/nannymlbeta/shared_invite/zt-16fvpeddz-HAvTsjNEyC9CE6JXbiM7BQ\n[contribute]: https://github.com/NannyML/nannyml/blob/main/CONTRIBUTING.rst\n\n# 🔱 Features\n\n### 1. Performance estimation and monitoring\n\nWhen the actual outcome of your deployed prediction models is delayed, or even when post-deployment target labels are completely absent, you can use NannyML's [CBPE-algorithm](https://nannyml.readthedocs.io/en/stable/how_it_works/performance_estimation.html#confidence-based-performance-estimation-cbpe) to **estimate model performance** for classification or NannyML's [DLE-algorithm](https://nannyml.readthedocs.io/en/stable/how_it_works/performance_estimation.html#direct-loss-estimation-dle) for regression. These algorithms provide you with any estimated metric you would like, i.e. ROC AUC or RSME. Rather than estimating the performance of future model predictions, CBPE and DLE estimate the expected model performance of the predictions made at inference time.\n\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/docs/_static/tutorials/performance_calculation/regression/tutorial-performance-calculation-regression-RMSE.svg\"\u003e\u003c/p\u003e\n\nNannyML can also **track the realised performance** of your machine learning model once targets are available.\n\n### 2. Data drift detection\n\nTo detect **multivariate feature drift** NannyML uses [PCA-based data reconstruction](https://nannyml.readthedocs.io/en/stable/how_it_works/multivariate_drift.html#data-reconstruction-with-pca). Changes in the resulting reconstruction error are monitored over time and data drift alerts are logged when the reconstruction error in a certain period exceeds a threshold. This threshold is calculated based on the reconstruction error observed in the reference period.\n\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/docs/_static/how-it-works/butterfly-multivariate-drift-pca.svg\"\u003e\u003c/p\u003e\n\nNannyML utilises statistical tests to detect **univariate feature drift**. We have just added a bunch of new univariate tests including Jensen-Shannon Distance and L-Infinity Distance, check out the [comprehensive list](https://nannyml.readthedocs.io/en/stable/how_it_works/univariate_drift_detection.html#methods-for-continuous-features). The results of these tests are tracked over time, properly corrected to counteract multiplicity and overlayed on the temporal feature distributions. (It is also possible to visualise the test-statistics over time, to get a notion of the drift magnitude.)\n\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/docs/_static/drift-guide-joyplot-distance_from_office.svg\"\u003e\u003cimg src=\"docs/_static/drift-guide-stacked-salary_range.svg\"\u003e\u003c/p\u003e\n\nNannyML uses the same statistical tests to detected **model output drift**.\n\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/docs/_static/drift-guide-y_pred.svg\"\u003e\u003c/p\u003e\n\n**Target distribution drift** can also be monitored using the same statistical tests. Bear in mind that this operation requires the presence of actuals.\n\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/NannyML/nannyml/main/docs/_static/drift-guide-work_home_actual.svg\"\u003e\u003c/p\u003e\n\n### 3. Intelligent alerting\n\nBecause NannyML can estimate performance, it is possible to weed out data drift alerts that do not impact expected performance, combatting alert fatigue. Besides linking data drift issues to drops in performance it is also possible to prioritise alerts according to other criteria using NannyML's Ranker.\n\n# 🚀 Getting started\n\n### Install NannyML\n\nNannyML depends on [LightGBM](https://github.com/microsoft/LightGBM). This might require you to set install additional\nOS-specific binaries. You can follow the [official installation guide](https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html).\n\nFrom PyPI:\n\n```bash\npip install nannyml\n```\n\nFrom Conda:\n\n```bash\n conda install -c conda-forge nannyml\n```\n\nRunning via [Docker](https://hub.docker.com/r/nannyml/nannyml):\n\n```bash\ndocker -v /local/config/dir/:/config/ run nannyml/nannyml nml run\n```\n\n**Here be dragons!** Use the latest development version of NannyML at your own risk:\n\n```bash\npython -m pip install git+https://github.com/NannyML/nannyml\n```\n\n#### Extras\n\nIf you're using database connections to read model inputs/outputs or you're exporting monitoring results to a database,\nyou'll need to include the optional `db` dependency. For example using `pip`:\n\n```bash\npip install nannyml[db]\n```\n\nor using `poetry`\n\n```bash\npoetry install nannyml --all-extras\n```\n\n### Quick Start\n\n_The following snippet is based on our [latest release](https://github.com/NannyML/nannyml/releases/latest)_.\n\n```python\nimport nannyml as nml\nimport pandas as pd\nfrom IPython.display import display\n\n# Load real-world data:\nreference_df, analysis_df, _ = nml.load_us_census_ma_employment_data()\ndisplay(reference_df.head())\ndisplay(analysis_df.head())\n\n# Choose a chunker or set a chunk size:\nchunk_size = 5000\n\n# initialize, specify required data columns, fit estimator and estimate:\nestimator = nml.CBPE(\n    problem_type='classification_binary',\n    y_pred_proba='predicted_probability',\n    y_pred='prediction',\n    y_true='employed',\n    metrics=['roc_auc'],\n    chunk_size=chunk_size,\n)\nestimator = estimator.fit(reference_df)\nestimated_performance = estimator.estimate(analysis_df)\n\n# Show results:\nfigure = estimated_performance.plot()\nfigure.show()\n\n# Define feature columns:\nfeatures = ['AGEP', 'SCHL', 'MAR', 'RELP', 'DIS', 'ESP', 'CIT', 'MIG', 'MIL', 'ANC',\n       'NATIVITY', 'DEAR', 'DEYE', 'DREM', 'SEX', 'RAC1P']\n\n# Initialize the object that will perform the Univariate Drift calculations:\nunivariate_calculator = nml.UnivariateDriftCalculator(\n    column_names=features,\n    chunk_size=chunk_size\n)\n\nunivariate_calculator.fit(reference_df)\nunivariate_drift = univariate_calculator.calculate(analysis_df)\n\n# Get features that drift the most with count-based ranker:\nalert_count_ranker = nml.AlertCountRanker()\nalert_count_ranked_features = alert_count_ranker.rank(univariate_drift)\ndisplay(alert_count_ranked_features.head())\n\n# Plot drift results for top 3 features:\nfigure = univariate_drift.filter(column_names=['RELP','AGEP', 'SCHL']).plot()\nfigure.show()\n\n# Compare drift of a selected feature with estimated performance\nuni_drift_AGEP_analysis = univariate_drift.filter(column_names=['AGEP'], period='analysis')\nfigure = estimated_performance.compare(uni_drift_AGEP_analysis).plot()\nfigure.show()\n\n# Plot distribution changes of the selected features:\nfigure = univariate_drift.filter(period='analysis', column_names=['RELP','AGEP', 'SCHL']).plot(kind='distribution')\nfigure.show()\n\n# Get target data, calculate, plot and compare realized performance with estimated performance:\n_, _, analysis_targets_df = nml.load_us_census_ma_employment_data()\n\nanalysis_with_targets_df = pd.concat([analysis_df, analysis_targets_df], axis=1)\ndisplay(analysis_with_targets_df.head())\n\nperformance_calculator = nml.PerformanceCalculator(\n    problem_type='classification_binary',\n    y_pred_proba='predicted_probability',\n    y_pred='prediction',\n    y_true='employed',\n    metrics=['roc_auc'],\n    chunk_size=chunk_size)\n\nperformance_calculator.fit(reference_df)\ncalculated_performance = performance_calculator.calculate(analysis_with_targets_df)\n\nfigure = estimated_performance.filter(period='analysis').compare(calculated_performance).plot()\nfigure.show()\n\n```\n\n# 📖 Documentation\n\n-   Performance monitoring\n    -   [Estimated performance](https://nannyml.readthedocs.io/en/main/tutorials/performance_estimation.html)\n    -   [Realized performance](https://nannyml.readthedocs.io/en/main/tutorials/performance_calculation.html)\n-   Drift detection\n    -   [Multivariate feature drift](https://nannyml.readthedocs.io/en/main/tutorials/detecting_data_drift/multivariate_drift_detection.html)\n    *   [Univariate feature drift](https://nannyml.readthedocs.io/en/main/tutorials/detecting_data_drift/univariate_drift_detection.html)\n\n# 🦸 Contributing and Community\n\nWe want to build NannyML together with the community! The easiest to contribute at the moment is to propose new features or log bugs under [issues](https://github.com/NannyML/nannyml/issues). For more information, have a look at [how to contribute](CONTRIBUTING.rst).\n\nThanks to all of our contributors!\n\n[\u003cimg alt=\"CoffiDev\" src=\"https://avatars.githubusercontent.com/u/6456756?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/CoffiDev)[\u003cimg alt=\"smetam\" src=\"https://avatars.githubusercontent.com/u/17511767?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/smetam)[\u003cimg alt=\"amrit110\" src=\"https://avatars.githubusercontent.com/u/8986523?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/amrit110)[\u003cimg alt=\"bgalvao\" src=\"https://avatars.githubusercontent.com/u/17158288?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/bgalvao)[\u003cimg alt=\"SoyGema\" src=\"https://avatars.githubusercontent.com/u/24204714?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/SoyGema)\n\n[\u003cimg alt=\"sebasmos\" src=\"https://avatars.githubusercontent.com/u/31293221?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/sebasmos)[\u003cimg alt=\"shezadkhan137\" src=\"https://avatars.githubusercontent.com/u/1761188?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/shezadkhan137)[\u003cimg alt=\"highstepper\" src=\"https://avatars.githubusercontent.com/u/22987068?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/highstepper)[\u003cimg alt=\"WojtekNML\" src=\"https://avatars.githubusercontent.com/u/100422459?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/WojtekNML)[\u003cimg alt=\"YYYasin19\" src=\"https://avatars.githubusercontent.com/u/26421646?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/YYYasin19)\n\n[\u003cimg alt=\"giodavoli\" src=\"https://avatars.githubusercontent.com/u/79570860?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/giodavoli)[\u003cimg alt=\"mireiar\" src=\"https://avatars.githubusercontent.com/u/105557052?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/mireiar)[\u003cimg alt=\"baskervilski\" src=\"https://avatars.githubusercontent.com/u/7703701?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/baskervilski)[\u003cimg alt=\"rfrenoy\" src=\"https://avatars.githubusercontent.com/u/12834432?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/rfrenoy)[\u003cimg alt=\"jrggementiza\" src=\"https://avatars.githubusercontent.com/u/30363148?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/jrggementiza)\n\n[\u003cimg alt=\"PieDude12\" src=\"https://avatars.githubusercontent.com/u/86422883?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/PieDude12)[\u003cimg alt=\"hakimelakhrass\" src=\"https://avatars.githubusercontent.com/u/100148105?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/hakimelakhrass)[\u003cimg alt=\"maciejbalawejder\" src=\"https://avatars.githubusercontent.com/u/47450700?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/maciejbalawejder)[\u003cimg alt=\"dependabot[bot]\" src=\"https://avatars.githubusercontent.com/in/29110?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/apps/dependabot)[\u003cimg alt=\"Dbhasin1\" src=\"https://avatars.githubusercontent.com/u/56479884?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/Dbhasin1)\n\n[\u003cimg alt=\"alexnanny\" src=\"https://avatars.githubusercontent.com/u/124191512?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/alexnanny)[\u003cimg alt=\"santiviquez\" src=\"https://avatars.githubusercontent.com/u/10890881?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/santiviquez)[\u003cimg alt=\"cartgr\" src=\"https://avatars.githubusercontent.com/u/86645043?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/cartgr)[\u003cimg alt=\"BobbuAbadeer\" src=\"https://avatars.githubusercontent.com/u/94649276?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/BobbuAbadeer)[\u003cimg alt=\"jnesfield\" src=\"https://avatars.githubusercontent.com/u/23704688?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/jnesfield)\n\n[\u003cimg alt=\"NeoKish\" src=\"https://avatars.githubusercontent.com/u/66986430?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/NeoKish)[\u003cimg alt=\"michael-nml\" src=\"https://avatars.githubusercontent.com/u/124588413?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/michael-nml)[\u003cimg alt=\"jakubnml\" src=\"https://avatars.githubusercontent.com/u/100147443?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/jakubnml)[\u003cimg alt=\"nikml\" src=\"https://avatars.githubusercontent.com/u/89025229?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/nikml)[\u003cimg alt=\"nnansters\" src=\"https://avatars.githubusercontent.com/u/94110348?v=4\u0026s=117\" width=\"117\"\u003e](https://github.com/nnansters)\n\n\n# 🙋 Get help\n\nThe best place to ask for help is in the [community slack](https://join.slack.com/t/nannymlbeta/shared_invite/zt-16fvpeddz-HAvTsjNEyC9CE6JXbiM7BQ). Feel free to join and ask questions or raise issues. Someone will definitely respond to you.\n\n# 🥷 Stay updated\n\nIf you want to stay up to date with recent changes to the NannyML library, you can subscribe to our [release notes](https://nannyml.substack.com). For thoughts on post-deployment data science from the NannyML team, feel free to visit our [blog](https://www.nannyml.com/blog). You can also sing up for our [newsletter](https://mailchi.mp/022c62281d13/postdeploymentnewsletter), which brings together the best papers, articles, news, and open-source libraries highlighting the ML challenges after deployment.\n\n# 📍 Roadmap\n\nCurious what we are working on next? Have a look at our [roadmap](https://bit.ly/nannymlroadmap). If you have any questions or if you would like to see things prioritised in a different way, let us know!\n\n# 📝 Citing NannyML\n\nTo cite NannyML in academic papers, please use the following BibTeX entry.\n\n### Version 0.13.0\n\n```\n    @misc{nannyml,\n        title = {{N}anny{ML} (release 0.13.0)},\n        howpublished = {\\url{https://github.com/NannyML/nannyml}},\n        month = mar,\n        year = 2023,\n        note = {NannyML, Belgium, OHL.},\n        key = {NannyML}\n    }\n```\n\n# 📄 License\n\nNannyML is distributed under an Apache License Version 2.0. A complete version can be found [here](LICENSE). All contributions will be distributed under this license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnannyml%2Fnannyml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnannyml%2Fnannyml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnannyml%2Fnannyml/lists"}