mlModelSaver


NamemlModelSaver JSON
Version 1.0.33 PyPI version JSON
download
home_pagehttps://github.com/smartdev-ca/mlModelSaver
SummaryMake life easier for saving and serving ML models
upload_time2024-06-20 07:30:14
maintainerNone
docs_urlNone
authorJason Jafari
requires_pythonNone
licenseNone
keywords machine learning model saving serving
VCS
bugtrack_url
requirements anyio appnope argon2-cffi argon2-cffi-bindings arrow asttokens async-lru attrs autopep8 Babel beautifulsoup4 bleach certifi cffi charset-normalizer comm contourpy cycler debugpy decorator defusedxml dill docutils et-xmlfile executing fastjsonschema fonttools fqdn h11 httpcore httpx idna importlib_metadata iniconfig ipykernel ipython ipywidgets isoduration jaraco.classes jaraco.context jaraco.functools jedi Jinja2 joblib json5 jsonpointer jsonschema jsonschema-specifications jupyter jupyter-console jupyter-events jupyter-lsp jupyter_client jupyter_core jupyter_server jupyter_server_terminals jupyterlab jupyterlab_pygments jupyterlab_server jupyterlab_widgets keyring kiwisolver markdown-it-py MarkupSafe matplotlib matplotlib-inline mdurl mistune more-itertools nbclient nbconvert nbformat nest-asyncio nh3 notebook notebook_shim numpy openpyxl overrides packaging pandas pandocfilters parso patsy pexpect pillow pkginfo platformdirs pluggy prometheus_client prompt_toolkit psutil ptyprocess pure-eval pycodestyle pycparser Pygments pyparsing pytest python-dateutil python-json-logger pytz PyYAML pyzmq qtconsole QtPy readme_renderer referencing requests requests-toolbelt rfc3339-validator rfc3986 rfc3986-validator rich rpds-py scikit-learn scipy Send2Trash setuptools six sniffio soupsieve stack-data statsmodels terminado threadpoolctl tinycss2 tornado traitlets twine types-python-dateutil tzdata uri-template urllib3 wcwidth webcolors webencodings websocket-client wheel widgetsnbextension zipp
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mlModelSaver documentation

## [Tutorial youtube](https://www.youtube.com/watch?v=fchTlNk2P8s)


Introducing **[mlModelSaver](https://pypi.org/project/mlModelSaver/)** – a streamlined Python module designed for data scientists and developers who seek a straightforward solution for model saving and serving.

While numerous tools are available for training machine learning models, many lightweight statistical models lack simple, efficient saving mechanisms. Existing enterprise solutions like MLflow are robust but come with considerable complexity. Based on my experience, I saw the need for an abstract model registry concept that simplifies this process.

**[mlModelSaver](https://github.com/smartdev-ca/mlModelSaver)** fills this gap, offering an intuitive way to save machine learning models and transformers. It facilitates seamless integration with frameworks like FastAPI ([Examples](https://github.com/jafarijason/ml_models_deployments)), Flask, and Django, enabling easy deployment and serving of models in production environments. Empower your machine learning workflow with **mlModelSaver** – the easy and efficient tool for model management.

## [Demo](https://ml.jasonjafari.com/docs)

```bash
curl --location 'https://ml.jasonjafari.com/models/list'
```

result
```
[
    "logisticRegYFromX1AndX2ModelFit",
    "salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit",
    "modelPredictSaleByTemperatureAdvertisingDiscountFit",
    "wageEducAgePower2ModelFit",
    "logRentWithBedsandLogSqftFit",
    "spamBasedOnRecipientsHyperlinksCharactersLogitModelFit",
    ...
]
```

### demo example 1
modelPredictSaleByTemperatureAdvertisingDiscountFit [train notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/001.ipynb)

Model info
```
curl --location 'https://ml.jasonjafari.com/model/info/modelPredictSaleByTemperatureAdvertisingDiscountFit'
```
result
```
{
    "modelName": "modelPredictSaleByTemperatureAdvertisingDiscountFit",
    "description": "modelPredictSaleByTemperatureAdvertisingDiscountFit",
    "modelType": "sm.OLS",
    "inputs": [
        {
            "name": "Temperature",
            "type": "float"
        },
        {
            "name": "Advertising",
            "type": "float"
        },
        {
            "name": "Discount",
            "type": "float"
        }
    ],
    "outputs": [
        {
            "name": "Sales",
            "type": "float"
        }
    ]
}
```

predict
```bash
curl --location 'https://ml.jasonjafari.com/model/predict' \
--header 'Content-Type: application/json' \
--data '{
    "name": "modelPredictSaleByTemperatureAdvertisingDiscountFit",
    "inputs": [
        {
            "Temperature": 42,
            "Advertising": 15,
            "Discount": 5
        }
    ]
}'
```
result
```
[
    {
        "Sales": 19590.467270313893
    }
]
```

### demo example2 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/002.ipynb) * interaction transformer
salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit

```bash
# info
curl --location 'https://ml.jasonjafari.com/model/info/salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit'
```
```bash
# predict
curl --location 'https://ml.jasonjafari.com/model/predict' \
--header 'Content-Type: application/json' \
--data '{
    "name": "salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit",
    "inputs": [
        {
            "GPA": 3.53,
            "MIS": 1,
            "Statistics": 0
        }
    ]
}'
```

### demo example3 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/003.ipynb) * quadratic eq transformer
wageEducAgePower2ModelFit
```bash
# info
curl --location 'https://ml.jasonjafari.com/model/info/wageEducAgePower2ModelFit'
```
```bash
# predict
curl --location 'https://ml.jasonjafari.com/model/predict' \
--header 'Content-Type: application/json' \
--data '{
    "name": "wageEducAgePower2ModelFit",
    "inputs": [
        {
            "Educ": 12,
            "Age": 76
        }
    ]
}'
```

### demo example4 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/004.ipynb) * log eq transformer for dependent adn independent attributes
logRentWithBedsandLogSqftFit
```bash
# info
curl --location 'https://ml.jasonjafari.com/model/info/logRentWithBedsandLogSqftFit'
```
```bash
# predict
curl --location 'https://ml.jasonjafari.com/model/predict' \
--header 'Content-Type: application/json' \
--data '{
    "name": "logRentWithBedsandLogSqftFit",
    "inputs": [
        {
            "Beds": 2,
            "Sqft": 900
        }
    ]
}'
```


### demo example5 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/005_Linear_Probability_and_logistic_Regression.ipynb) * Logistic regression
logisticRegYFromX1AndX2ModelFit
```bash
# info
curl --location 'https://ml.jasonjafari.com/model/info/logisticRegYFromX1AndX2ModelFit'
```
```bash
# predict
curl --location 'https://ml.jasonjafari.com/model/predict' \
--header 'Content-Type: application/json' \
--data '{
    "name": "logisticRegYFromX1AndX2ModelFit",
    "inputs": [
        {
            "x1": 16.35,
            "x2": 49.44
        }
    ]
}'
```

### demo example6 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/007_KNN_adjusted.ipynb) * KNN
gymEnrollAgeIncomeHoursDfKnnFit
```bash
# info
curl --location 'https://ml.jasonjafari.com/model/info/gymEnrollAgeIncomeHoursDfKnnFit'
```
```bash
# predict
curl --location 'https://ml.jasonjafari.com/model/predict' \
--header 'Content-Type: application/json' \
--data '{
    "name": "gymEnrollAgeIncomeHoursDfKnnFit",
    "inputs": [
        {
            "Age": 26,
            "Income": 18000,
            "Hours": 14
        },
        {
            "Age": 55,
            "Income": 42000,
            "Hours": 16
        }
    ]
}'
```


## Installation

You can install **mlModelSaver** via pip:

```bash
pip install mlModelSaver
```


# mlModelSaver Example: Simple Linear Regression

In this example, we demonstrate how to use **mlModelSaver** to export a simple linear regression model based on a notebook from [ml_models_deployments](https://github.com/jafarijason/ml_models_deployments).

### Example Description

This example builds a simple linear regression model to predict sales based on temperature, advertising, and discount factors. Once the model is fitted and satisfactory, **mlModelSaver** allows you to easily save and deploy the model for use in production environments.

### Example Code - notebook available [here](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/001.ipynb)


```python
def add_constant_columnTransformer(df):
    # example transformer
    df_with_const = df.copy()
    df_with_const.insert(0, 'const', 1)
    return df_with_const

from mlModelSaver import MlModelSaver
mlModelSaverInstance = MlModelSaver({
    "baseRelativePath": "..",
    "modelsFolder": "models"
})

# Export the model using MlModelSaver
loadedModel = mlModelSaverInstance.exportModel(
     # the models is fitted and ready for usage
    simpleLinearRegressionFittedModel,
    {
        "modelName": "modelPredictSaleByTemperatureAdvertisingDiscountFit",
        "description": "Example model predicting sales based on temperature, advertising, and discount.",
        "modelType": "sm.OLS",  # Example model type (replace with actual type)
        "inputs": [
            {"name": "Temperature", "type": "float"},
            {"name": "Advertising", "type": "float"},
            {"name": "Discount", "type": "float"}
        ],
        "transformer": add_constant_columnTransformer,  # Use your transformation function here
        "outputs": [
            {
                "name": "Sales",
                "type": "float"
            }
        ]
    }
)

testData = [
    {
        "Temperature": 42,
        "Advertising": 15,
        "Discount": 5
    }
]

# Create a DataFrame from the dictionary
testDf = pd.DataFrame(testData)

# this will be your model without export
modelPredictSaleByTemperatureAdvertisingDiscountFit.predict( add_constant_column(testDf)

# result 0    19590.46727 \n dtype: float64

# this will be result of predict with exported model
loadedModel.mlModelSavePredict(testDf)
#result [{'Sales': 19590.467270313893}]

```

## Supported Models

Current supported models by **mlModelSaver**:

```python
supportedModels = {
    "sm.OLS": {
        "supported": True,
        "normalPredictorFunction": "predict"
    },
    "sm.Logit": {
        "supported": True,
        "normalPredictorFunction": "predict"
    },
    "sklearn.neighbors.KNeighborsClassifier": {
        "supported": True,
        "normalPredictorFunction": "predict_proba"
    },
    "sklearn.tree.DecisionTreeClassifier": {
        "supported": True,
        "normalPredictorFunction": "predict_proba"
    },
}
```



## Next Steps

- [-] **Support More Models** **WIP**: Extend **mlModelSaver** to support various types of models beyond simple linear regression, such as decision trees, neural networks, and ensemble methods.

- [-] **Additional Examples**: Provide diverse examples demonstrating the use of **mlModelSaver** with different machine learning models and data preprocessing techniques.

- [] **Video Tutorial**: Create a comprehensive video tutorial demonstrating how to train models, use **mlModelSaver** for saving and deployment, and integrate with popular frameworks like Flask and FastAPI.

- [] **Save Models to S3**: Implement functionality to save models directly to Amazon S3 for scalable and reliable storage, ensuring robust deployment in cloud environments.


### Support More Models

Expand **mlModelSaver** to handle a variety of machine learning models beyond simple linear regression. Example models could include decision trees, support vector machines, and deep learning models. Ensure that each model type integrates seamlessly with **mlModelSaver**'s saving and deployment functionalities.

### Save Models to S3

Enhance **mlModelSaver** to include options for saving models directly to Amazon S3. This feature ensures that models are stored securely and can be accessed from any location, facilitating deployment across distributed systems and cloud environments.

### Additional Examples

Include a range of examples demonstrating **mlModelSaver**'s capabilities across different use cases. Examples should cover various scenarios such as regression, classification, and time series forecasting. Provide clear instructions and code snippets for each example, showcasing how to prepare data, train models, and deploy them using **mlModelSaver**.

### Video Tutorial

Produce a video tutorial that guides users through the entire process of using **mlModelSaver**. The tutorial should include steps for training a model, integrating with **mlModelSaver** for saving and loading, and deploying the model using popular web frameworks like Flask or FastAPI. Emphasize best practices and common pitfalls to help users maximize efficiency and reliability in their machine learning projects.

These next steps will enhance **mlModelSaver**'s usability and scalability, enabling users to leverage advanced machine learning models effectively in production environments.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/smartdev-ca/mlModelSaver",
    "name": "mlModelSaver",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "machine learning model saving serving",
    "author": "Jason Jafari",
    "author_email": "me@jasonjafari.com",
    "download_url": "https://files.pythonhosted.org/packages/d3/79/3b9193e41166908e6667e84d3ede736cfb626b2ffb351f3c02518ccae608/mlmodelsaver-1.0.33.tar.gz",
    "platform": null,
    "description": "# mlModelSaver documentation\n\n## [Tutorial youtube](https://www.youtube.com/watch?v=fchTlNk2P8s)\n\n\nIntroducing **[mlModelSaver](https://pypi.org/project/mlModelSaver/)** \u2013 a streamlined Python module designed for data scientists and developers who seek a straightforward solution for model saving and serving.\n\nWhile numerous tools are available for training machine learning models, many lightweight statistical models lack simple, efficient saving mechanisms. Existing enterprise solutions like MLflow are robust but come with considerable complexity. Based on my experience, I saw the need for an abstract model registry concept that simplifies this process.\n\n**[mlModelSaver](https://github.com/smartdev-ca/mlModelSaver)** fills this gap, offering an intuitive way to save machine learning models and transformers. It facilitates seamless integration with frameworks like FastAPI ([Examples](https://github.com/jafarijason/ml_models_deployments)), Flask, and Django, enabling easy deployment and serving of models in production environments. Empower your machine learning workflow with **mlModelSaver** \u2013 the easy and efficient tool for model management.\n\n## [Demo](https://ml.jasonjafari.com/docs)\n\n```bash\ncurl --location 'https://ml.jasonjafari.com/models/list'\n```\n\nresult\n```\n[\n    \"logisticRegYFromX1AndX2ModelFit\",\n    \"salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit\",\n    \"modelPredictSaleByTemperatureAdvertisingDiscountFit\",\n    \"wageEducAgePower2ModelFit\",\n    \"logRentWithBedsandLogSqftFit\",\n    \"spamBasedOnRecipientsHyperlinksCharactersLogitModelFit\",\n    ...\n]\n```\n\n### demo example 1\nmodelPredictSaleByTemperatureAdvertisingDiscountFit [train notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/001.ipynb)\n\nModel info\n```\ncurl --location 'https://ml.jasonjafari.com/model/info/modelPredictSaleByTemperatureAdvertisingDiscountFit'\n```\nresult\n```\n{\n    \"modelName\": \"modelPredictSaleByTemperatureAdvertisingDiscountFit\",\n    \"description\": \"modelPredictSaleByTemperatureAdvertisingDiscountFit\",\n    \"modelType\": \"sm.OLS\",\n    \"inputs\": [\n        {\n            \"name\": \"Temperature\",\n            \"type\": \"float\"\n        },\n        {\n            \"name\": \"Advertising\",\n            \"type\": \"float\"\n        },\n        {\n            \"name\": \"Discount\",\n            \"type\": \"float\"\n        }\n    ],\n    \"outputs\": [\n        {\n            \"name\": \"Sales\",\n            \"type\": \"float\"\n        }\n    ]\n}\n```\n\npredict\n```bash\ncurl --location 'https://ml.jasonjafari.com/model/predict' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"name\": \"modelPredictSaleByTemperatureAdvertisingDiscountFit\",\n    \"inputs\": [\n        {\n            \"Temperature\": 42,\n            \"Advertising\": 15,\n            \"Discount\": 5\n        }\n    ]\n}'\n```\nresult\n```\n[\n    {\n        \"Sales\": 19590.467270313893\n    }\n]\n```\n\n### demo example2 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/002.ipynb) * interaction transformer\nsalaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit\n\n```bash\n# info\ncurl --location 'https://ml.jasonjafari.com/model/info/salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit'\n```\n```bash\n# predict\ncurl --location 'https://ml.jasonjafari.com/model/predict' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"name\": \"salaryBasedOnGpaMisStatistics_Transfoms_misXStatisticsFit\",\n    \"inputs\": [\n        {\n            \"GPA\": 3.53,\n            \"MIS\": 1,\n            \"Statistics\": 0\n        }\n    ]\n}'\n```\n\n### demo example3 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/003.ipynb) * quadratic eq transformer\nwageEducAgePower2ModelFit\n```bash\n# info\ncurl --location 'https://ml.jasonjafari.com/model/info/wageEducAgePower2ModelFit'\n```\n```bash\n# predict\ncurl --location 'https://ml.jasonjafari.com/model/predict' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"name\": \"wageEducAgePower2ModelFit\",\n    \"inputs\": [\n        {\n            \"Educ\": 12,\n            \"Age\": 76\n        }\n    ]\n}'\n```\n\n### demo example4 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/004.ipynb) * log eq transformer for dependent adn independent attributes\nlogRentWithBedsandLogSqftFit\n```bash\n# info\ncurl --location 'https://ml.jasonjafari.com/model/info/logRentWithBedsandLogSqftFit'\n```\n```bash\n# predict\ncurl --location 'https://ml.jasonjafari.com/model/predict' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"name\": \"logRentWithBedsandLogSqftFit\",\n    \"inputs\": [\n        {\n            \"Beds\": 2,\n            \"Sqft\": 900\n        }\n    ]\n}'\n```\n\n\n### demo example5 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/005_Linear_Probability_and_logistic_Regression.ipynb) * Logistic regression\nlogisticRegYFromX1AndX2ModelFit\n```bash\n# info\ncurl --location 'https://ml.jasonjafari.com/model/info/logisticRegYFromX1AndX2ModelFit'\n```\n```bash\n# predict\ncurl --location 'https://ml.jasonjafari.com/model/predict' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"name\": \"logisticRegYFromX1AndX2ModelFit\",\n    \"inputs\": [\n        {\n            \"x1\": 16.35,\n            \"x2\": 49.44\n        }\n    ]\n}'\n```\n\n### demo example6 [train Notebook](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/007_KNN_adjusted.ipynb) * KNN\ngymEnrollAgeIncomeHoursDfKnnFit\n```bash\n# info\ncurl --location 'https://ml.jasonjafari.com/model/info/gymEnrollAgeIncomeHoursDfKnnFit'\n```\n```bash\n# predict\ncurl --location 'https://ml.jasonjafari.com/model/predict' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"name\": \"gymEnrollAgeIncomeHoursDfKnnFit\",\n    \"inputs\": [\n        {\n            \"Age\": 26,\n            \"Income\": 18000,\n            \"Hours\": 14\n        },\n        {\n            \"Age\": 55,\n            \"Income\": 42000,\n            \"Hours\": 16\n        }\n    ]\n}'\n```\n\n\n## Installation\n\nYou can install **mlModelSaver** via pip:\n\n```bash\npip install mlModelSaver\n```\n\n\n# mlModelSaver Example: Simple Linear Regression\n\nIn this example, we demonstrate how to use **mlModelSaver** to export a simple linear regression model based on a notebook from [ml_models_deployments](https://github.com/jafarijason/ml_models_deployments).\n\n### Example Description\n\nThis example builds a simple linear regression model to predict sales based on temperature, advertising, and discount factors. Once the model is fitted and satisfactory, **mlModelSaver** allows you to easily save and deploy the model for use in production environments.\n\n### Example Code - notebook available [here](https://github.com/jafarijason/ml_models_deployments/blob/master/notebooks/001.ipynb)\n\n\n```python\ndef add_constant_columnTransformer(df):\n    # example transformer\n    df_with_const = df.copy()\n    df_with_const.insert(0, 'const', 1)\n    return df_with_const\n\nfrom mlModelSaver import MlModelSaver\nmlModelSaverInstance = MlModelSaver({\n    \"baseRelativePath\": \"..\",\n    \"modelsFolder\": \"models\"\n})\n\n# Export the model using MlModelSaver\nloadedModel = mlModelSaverInstance.exportModel(\n     # the models is fitted and ready for usage\n    simpleLinearRegressionFittedModel,\n    {\n        \"modelName\": \"modelPredictSaleByTemperatureAdvertisingDiscountFit\",\n        \"description\": \"Example model predicting sales based on temperature, advertising, and discount.\",\n        \"modelType\": \"sm.OLS\",  # Example model type (replace with actual type)\n        \"inputs\": [\n            {\"name\": \"Temperature\", \"type\": \"float\"},\n            {\"name\": \"Advertising\", \"type\": \"float\"},\n            {\"name\": \"Discount\", \"type\": \"float\"}\n        ],\n        \"transformer\": add_constant_columnTransformer,  # Use your transformation function here\n        \"outputs\": [\n            {\n                \"name\": \"Sales\",\n                \"type\": \"float\"\n            }\n        ]\n    }\n)\n\ntestData = [\n    {\n        \"Temperature\": 42,\n        \"Advertising\": 15,\n        \"Discount\": 5\n    }\n]\n\n# Create a DataFrame from the dictionary\ntestDf = pd.DataFrame(testData)\n\n# this will be your model without export\nmodelPredictSaleByTemperatureAdvertisingDiscountFit.predict( add_constant_column(testDf)\n\n# result 0    19590.46727 \\n dtype: float64\n\n# this will be result of predict with exported model\nloadedModel.mlModelSavePredict(testDf)\n#result [{'Sales': 19590.467270313893}]\n\n```\n\n## Supported Models\n\nCurrent supported models by **mlModelSaver**:\n\n```python\nsupportedModels = {\n    \"sm.OLS\": {\n        \"supported\": True,\n        \"normalPredictorFunction\": \"predict\"\n    },\n    \"sm.Logit\": {\n        \"supported\": True,\n        \"normalPredictorFunction\": \"predict\"\n    },\n    \"sklearn.neighbors.KNeighborsClassifier\": {\n        \"supported\": True,\n        \"normalPredictorFunction\": \"predict_proba\"\n    },\n    \"sklearn.tree.DecisionTreeClassifier\": {\n        \"supported\": True,\n        \"normalPredictorFunction\": \"predict_proba\"\n    },\n}\n```\n\n\n\n## Next Steps\n\n- [-] **Support More Models** **WIP**: Extend **mlModelSaver** to support various types of models beyond simple linear regression, such as decision trees, neural networks, and ensemble methods.\n\n- [-] **Additional Examples**: Provide diverse examples demonstrating the use of **mlModelSaver** with different machine learning models and data preprocessing techniques.\n\n- [] **Video Tutorial**: Create a comprehensive video tutorial demonstrating how to train models, use **mlModelSaver** for saving and deployment, and integrate with popular frameworks like Flask and FastAPI.\n\n- [] **Save Models to S3**: Implement functionality to save models directly to Amazon S3 for scalable and reliable storage, ensuring robust deployment in cloud environments.\n\n\n### Support More Models\n\nExpand **mlModelSaver** to handle a variety of machine learning models beyond simple linear regression. Example models could include decision trees, support vector machines, and deep learning models. Ensure that each model type integrates seamlessly with **mlModelSaver**'s saving and deployment functionalities.\n\n### Save Models to S3\n\nEnhance **mlModelSaver** to include options for saving models directly to Amazon S3. This feature ensures that models are stored securely and can be accessed from any location, facilitating deployment across distributed systems and cloud environments.\n\n### Additional Examples\n\nInclude a range of examples demonstrating **mlModelSaver**'s capabilities across different use cases. Examples should cover various scenarios such as regression, classification, and time series forecasting. Provide clear instructions and code snippets for each example, showcasing how to prepare data, train models, and deploy them using **mlModelSaver**.\n\n### Video Tutorial\n\nProduce a video tutorial that guides users through the entire process of using **mlModelSaver**. The tutorial should include steps for training a model, integrating with **mlModelSaver** for saving and loading, and deploying the model using popular web frameworks like Flask or FastAPI. Emphasize best practices and common pitfalls to help users maximize efficiency and reliability in their machine learning projects.\n\nThese next steps will enhance **mlModelSaver**'s usability and scalability, enabling users to leverage advanced machine learning models effectively in production environments.\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Make life easier for saving and serving ML models",
    "version": "1.0.33",
    "project_urls": {
        "Documentation": "https://github.com/smartdev-ca/mlModelSaver/blob/main/DOCS.md",
        "Homepage": "https://github.com/smartdev-ca/mlModelSaver",
        "Source": "https://github.com/smartdev-ca/mlModelSaver",
        "Tracker": "https://github.com/smartdev-ca/mlModelSaver/issues"
    },
    "split_keywords": [
        "machine",
        "learning",
        "model",
        "saving",
        "serving"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85a4a16e557b9a4abb2a32b35d7763c64a8848f96b24e590f4685648bbb3c7fb",
                "md5": "d5c228e386dc55b2cbd42034ff78e657",
                "sha256": "7a865fc9a934185fe869f1b427d9127fcc29af0343098e935468354dabfe130b"
            },
            "downloads": -1,
            "filename": "mlModelSaver-1.0.33-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d5c228e386dc55b2cbd42034ff78e657",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 7414,
            "upload_time": "2024-06-20T07:30:12",
            "upload_time_iso_8601": "2024-06-20T07:30:12.823954Z",
            "url": "https://files.pythonhosted.org/packages/85/a4/a16e557b9a4abb2a32b35d7763c64a8848f96b24e590f4685648bbb3c7fb/mlModelSaver-1.0.33-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d3793b9193e41166908e6667e84d3ede736cfb626b2ffb351f3c02518ccae608",
                "md5": "b387e3e36123ede06e549c8449f6c158",
                "sha256": "a7085c2429d66e9d8163ef8c91b85d39717a300700a90227d4514b7ba929f7a3"
            },
            "downloads": -1,
            "filename": "mlmodelsaver-1.0.33.tar.gz",
            "has_sig": false,
            "md5_digest": "b387e3e36123ede06e549c8449f6c158",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 7506,
            "upload_time": "2024-06-20T07:30:14",
            "upload_time_iso_8601": "2024-06-20T07:30:14.688952Z",
            "url": "https://files.pythonhosted.org/packages/d3/79/3b9193e41166908e6667e84d3ede736cfb626b2ffb351f3c02518ccae608/mlmodelsaver-1.0.33.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-20 07:30:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "smartdev-ca",
    "github_project": "mlModelSaver",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "anyio",
            "specs": [
                [
                    "==",
                    "4.4.0"
                ]
            ]
        },
        {
            "name": "appnope",
            "specs": [
                [
                    "==",
                    "0.1.4"
                ]
            ]
        },
        {
            "name": "argon2-cffi",
            "specs": [
                [
                    "==",
                    "23.1.0"
                ]
            ]
        },
        {
            "name": "argon2-cffi-bindings",
            "specs": [
                [
                    "==",
                    "21.2.0"
                ]
            ]
        },
        {
            "name": "arrow",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "asttokens",
            "specs": [
                [
                    "==",
                    "2.4.1"
                ]
            ]
        },
        {
            "name": "async-lru",
            "specs": [
                [
                    "==",
                    "2.0.4"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "23.2.0"
                ]
            ]
        },
        {
            "name": "autopep8",
            "specs": [
                [
                    "==",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "Babel",
            "specs": [
                [
                    "==",
                    "2.15.0"
                ]
            ]
        },
        {
            "name": "beautifulsoup4",
            "specs": [
                [
                    "==",
                    "4.12.3"
                ]
            ]
        },
        {
            "name": "bleach",
            "specs": [
                [
                    "==",
                    "6.1.0"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2024.6.2"
                ]
            ]
        },
        {
            "name": "cffi",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.3.2"
                ]
            ]
        },
        {
            "name": "comm",
            "specs": [
                [
                    "==",
                    "0.2.2"
                ]
            ]
        },
        {
            "name": "contourpy",
            "specs": [
                [
                    "==",
                    "1.2.1"
                ]
            ]
        },
        {
            "name": "cycler",
            "specs": [
                [
                    "==",
                    "0.12.1"
                ]
            ]
        },
        {
            "name": "debugpy",
            "specs": [
                [
                    "==",
                    "1.8.1"
                ]
            ]
        },
        {
            "name": "decorator",
            "specs": [
                [
                    "==",
                    "5.1.1"
                ]
            ]
        },
        {
            "name": "defusedxml",
            "specs": [
                [
                    "==",
                    "0.7.1"
                ]
            ]
        },
        {
            "name": "dill",
            "specs": [
                [
                    "==",
                    "0.3.8"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.21.2"
                ]
            ]
        },
        {
            "name": "et-xmlfile",
            "specs": [
                [
                    "==",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "executing",
            "specs": [
                [
                    "==",
                    "2.0.1"
                ]
            ]
        },
        {
            "name": "fastjsonschema",
            "specs": [
                [
                    "==",
                    "2.20.0"
                ]
            ]
        },
        {
            "name": "fonttools",
            "specs": [
                [
                    "==",
                    "4.53.0"
                ]
            ]
        },
        {
            "name": "fqdn",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "h11",
            "specs": [
                [
                    "==",
                    "0.14.0"
                ]
            ]
        },
        {
            "name": "httpcore",
            "specs": [
                [
                    "==",
                    "1.0.5"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    "==",
                    "0.27.0"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.7"
                ]
            ]
        },
        {
            "name": "importlib_metadata",
            "specs": [
                [
                    "==",
                    "7.1.0"
                ]
            ]
        },
        {
            "name": "iniconfig",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "ipykernel",
            "specs": [
                [
                    "==",
                    "6.29.4"
                ]
            ]
        },
        {
            "name": "ipython",
            "specs": [
                [
                    "==",
                    "8.25.0"
                ]
            ]
        },
        {
            "name": "ipywidgets",
            "specs": [
                [
                    "==",
                    "8.1.3"
                ]
            ]
        },
        {
            "name": "isoduration",
            "specs": [
                [
                    "==",
                    "20.11.0"
                ]
            ]
        },
        {
            "name": "jaraco.classes",
            "specs": [
                [
                    "==",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "jaraco.context",
            "specs": [
                [
                    "==",
                    "5.3.0"
                ]
            ]
        },
        {
            "name": "jaraco.functools",
            "specs": [
                [
                    "==",
                    "4.0.1"
                ]
            ]
        },
        {
            "name": "jedi",
            "specs": [
                [
                    "==",
                    "0.19.1"
                ]
            ]
        },
        {
            "name": "Jinja2",
            "specs": [
                [
                    "==",
                    "3.1.4"
                ]
            ]
        },
        {
            "name": "joblib",
            "specs": [
                [
                    "==",
                    "1.4.2"
                ]
            ]
        },
        {
            "name": "json5",
            "specs": [
                [
                    "==",
                    "0.9.25"
                ]
            ]
        },
        {
            "name": "jsonpointer",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "jsonschema",
            "specs": [
                [
                    "==",
                    "4.22.0"
                ]
            ]
        },
        {
            "name": "jsonschema-specifications",
            "specs": [
                [
                    "==",
                    "2023.12.1"
                ]
            ]
        },
        {
            "name": "jupyter",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "jupyter-console",
            "specs": [
                [
                    "==",
                    "6.6.3"
                ]
            ]
        },
        {
            "name": "jupyter-events",
            "specs": [
                [
                    "==",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "jupyter-lsp",
            "specs": [
                [
                    "==",
                    "2.2.5"
                ]
            ]
        },
        {
            "name": "jupyter_client",
            "specs": [
                [
                    "==",
                    "8.6.2"
                ]
            ]
        },
        {
            "name": "jupyter_core",
            "specs": [
                [
                    "==",
                    "5.7.2"
                ]
            ]
        },
        {
            "name": "jupyter_server",
            "specs": [
                [
                    "==",
                    "2.14.1"
                ]
            ]
        },
        {
            "name": "jupyter_server_terminals",
            "specs": [
                [
                    "==",
                    "0.5.3"
                ]
            ]
        },
        {
            "name": "jupyterlab",
            "specs": [
                [
                    "==",
                    "4.2.2"
                ]
            ]
        },
        {
            "name": "jupyterlab_pygments",
            "specs": [
                [
                    "==",
                    "0.3.0"
                ]
            ]
        },
        {
            "name": "jupyterlab_server",
            "specs": [
                [
                    "==",
                    "2.27.2"
                ]
            ]
        },
        {
            "name": "jupyterlab_widgets",
            "specs": [
                [
                    "==",
                    "3.0.11"
                ]
            ]
        },
        {
            "name": "keyring",
            "specs": [
                [
                    "==",
                    "25.2.1"
                ]
            ]
        },
        {
            "name": "kiwisolver",
            "specs": [
                [
                    "==",
                    "1.4.5"
                ]
            ]
        },
        {
            "name": "markdown-it-py",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "MarkupSafe",
            "specs": [
                [
                    "==",
                    "2.1.5"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    "==",
                    "3.9.0"
                ]
            ]
        },
        {
            "name": "matplotlib-inline",
            "specs": [
                [
                    "==",
                    "0.1.7"
                ]
            ]
        },
        {
            "name": "mdurl",
            "specs": [
                [
                    "==",
                    "0.1.2"
                ]
            ]
        },
        {
            "name": "mistune",
            "specs": [
                [
                    "==",
                    "3.0.2"
                ]
            ]
        },
        {
            "name": "more-itertools",
            "specs": [
                [
                    "==",
                    "10.3.0"
                ]
            ]
        },
        {
            "name": "nbclient",
            "specs": [
                [
                    "==",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "nbconvert",
            "specs": [
                [
                    "==",
                    "7.16.4"
                ]
            ]
        },
        {
            "name": "nbformat",
            "specs": [
                [
                    "==",
                    "5.10.4"
                ]
            ]
        },
        {
            "name": "nest-asyncio",
            "specs": [
                [
                    "==",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "nh3",
            "specs": [
                [
                    "==",
                    "0.2.17"
                ]
            ]
        },
        {
            "name": "notebook",
            "specs": [
                [
                    "==",
                    "7.2.1"
                ]
            ]
        },
        {
            "name": "notebook_shim",
            "specs": [
                [
                    "==",
                    "0.2.4"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "1.26.4"
                ]
            ]
        },
        {
            "name": "openpyxl",
            "specs": [
                [
                    "==",
                    "3.1.4"
                ]
            ]
        },
        {
            "name": "overrides",
            "specs": [
                [
                    "==",
                    "7.7.0"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "24.1"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "==",
                    "2.2.2"
                ]
            ]
        },
        {
            "name": "pandocfilters",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "parso",
            "specs": [
                [
                    "==",
                    "0.8.4"
                ]
            ]
        },
        {
            "name": "patsy",
            "specs": [
                [
                    "==",
                    "0.5.6"
                ]
            ]
        },
        {
            "name": "pexpect",
            "specs": [
                [
                    "==",
                    "4.9.0"
                ]
            ]
        },
        {
            "name": "pillow",
            "specs": [
                [
                    "==",
                    "10.3.0"
                ]
            ]
        },
        {
            "name": "pkginfo",
            "specs": [
                [
                    "==",
                    "1.11.1"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "4.2.2"
                ]
            ]
        },
        {
            "name": "pluggy",
            "specs": [
                [
                    "==",
                    "1.5.0"
                ]
            ]
        },
        {
            "name": "prometheus_client",
            "specs": [
                [
                    "==",
                    "0.20.0"
                ]
            ]
        },
        {
            "name": "prompt_toolkit",
            "specs": [
                [
                    "==",
                    "3.0.47"
                ]
            ]
        },
        {
            "name": "psutil",
            "specs": [
                [
                    "==",
                    "5.9.8"
                ]
            ]
        },
        {
            "name": "ptyprocess",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "pure-eval",
            "specs": [
                [
                    "==",
                    "0.2.2"
                ]
            ]
        },
        {
            "name": "pycodestyle",
            "specs": [
                [
                    "==",
                    "2.11.1"
                ]
            ]
        },
        {
            "name": "pycparser",
            "specs": [
                [
                    "==",
                    "2.22"
                ]
            ]
        },
        {
            "name": "Pygments",
            "specs": [
                [
                    "==",
                    "2.18.0"
                ]
            ]
        },
        {
            "name": "pyparsing",
            "specs": [
                [
                    "==",
                    "3.1.2"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "8.2.2"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "python-json-logger",
            "specs": [
                [
                    "==",
                    "2.0.7"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    "==",
                    "2024.1"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "6.0.1"
                ]
            ]
        },
        {
            "name": "pyzmq",
            "specs": [
                [
                    "==",
                    "26.0.3"
                ]
            ]
        },
        {
            "name": "qtconsole",
            "specs": [
                [
                    "==",
                    "5.5.2"
                ]
            ]
        },
        {
            "name": "QtPy",
            "specs": [
                [
                    "==",
                    "2.4.1"
                ]
            ]
        },
        {
            "name": "readme_renderer",
            "specs": [
                [
                    "==",
                    "43.0"
                ]
            ]
        },
        {
            "name": "referencing",
            "specs": [
                [
                    "==",
                    "0.35.1"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.3"
                ]
            ]
        },
        {
            "name": "requests-toolbelt",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "rfc3339-validator",
            "specs": [
                [
                    "==",
                    "0.1.4"
                ]
            ]
        },
        {
            "name": "rfc3986",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "rfc3986-validator",
            "specs": [
                [
                    "==",
                    "0.1.1"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    "==",
                    "13.7.1"
                ]
            ]
        },
        {
            "name": "rpds-py",
            "specs": [
                [
                    "==",
                    "0.18.1"
                ]
            ]
        },
        {
            "name": "scikit-learn",
            "specs": [
                [
                    "==",
                    "1.5.0"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    "==",
                    "1.13.1"
                ]
            ]
        },
        {
            "name": "Send2Trash",
            "specs": [
                [
                    "==",
                    "1.8.3"
                ]
            ]
        },
        {
            "name": "setuptools",
            "specs": [
                [
                    "==",
                    "70.0.0"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "sniffio",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "soupsieve",
            "specs": [
                [
                    "==",
                    "2.5"
                ]
            ]
        },
        {
            "name": "stack-data",
            "specs": [
                [
                    "==",
                    "0.6.3"
                ]
            ]
        },
        {
            "name": "statsmodels",
            "specs": [
                [
                    "==",
                    "0.14.2"
                ]
            ]
        },
        {
            "name": "terminado",
            "specs": [
                [
                    "==",
                    "0.18.1"
                ]
            ]
        },
        {
            "name": "threadpoolctl",
            "specs": [
                [
                    "==",
                    "3.5.0"
                ]
            ]
        },
        {
            "name": "tinycss2",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "tornado",
            "specs": [
                [
                    "==",
                    "6.4.1"
                ]
            ]
        },
        {
            "name": "traitlets",
            "specs": [
                [
                    "==",
                    "5.14.3"
                ]
            ]
        },
        {
            "name": "twine",
            "specs": [
                [
                    "==",
                    "5.1.0"
                ]
            ]
        },
        {
            "name": "types-python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.20240316"
                ]
            ]
        },
        {
            "name": "tzdata",
            "specs": [
                [
                    "==",
                    "2024.1"
                ]
            ]
        },
        {
            "name": "uri-template",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.2.1"
                ]
            ]
        },
        {
            "name": "wcwidth",
            "specs": [
                [
                    "==",
                    "0.2.13"
                ]
            ]
        },
        {
            "name": "webcolors",
            "specs": [
                [
                    "==",
                    "24.6.0"
                ]
            ]
        },
        {
            "name": "webencodings",
            "specs": [
                [
                    "==",
                    "0.5.1"
                ]
            ]
        },
        {
            "name": "websocket-client",
            "specs": [
                [
                    "==",
                    "1.8.0"
                ]
            ]
        },
        {
            "name": "wheel",
            "specs": [
                [
                    "==",
                    "0.43.0"
                ]
            ]
        },
        {
            "name": "widgetsnbextension",
            "specs": [
                [
                    "==",
                    "4.0.11"
                ]
            ]
        },
        {
            "name": "zipp",
            "specs": [
                [
                    "==",
                    "3.19.2"
                ]
            ]
        }
    ],
    "lcname": "mlmodelsaver"
}
        
Elapsed time: 3.53119s