chore: bump version to 1.0.11

This commit is contained in:
Jason Jafari 2024-06-14 01:48:32 -04:00
parent b483187895
commit a87ac0df40
10 changed files with 168 additions and 6 deletions

4
.gitignore vendored
View File

@ -7,4 +7,6 @@ __pycache__
dist/ dist/
build/ build/
node_modules node_modules
~~

View File

@ -1,5 +1,6 @@
{ {
"cSpell.words": [ "cSpell.words": [
"Jafari" "Jafari",
"statsmodels"
] ]
} }

BIN
datasets/Salary_MIS.xlsx Normal file

Binary file not shown.

View File

@ -0,0 +1,2 @@
from mlModelSaver.mlModelSaver import MlModelSaver

View File

@ -1,2 +1,67 @@
def mlModelSaver(): import pickle
print("mlModelSaver") import json
supportedModels = {
"sm.OLS": {
"supported": True
}
}
supportedDataType = {
"int": {
"supported": True
},
"float": {
"supported": True
},
"binary":{
"supported": True
}
}
class MlModelSaver:
def __init__(self, config):
self.baseRelativePath = config.get('baseRelativePath', '.')
self.modelsFolder = config.get('modelsFolder', '~~modelsFolder')
def showSupportedModels(self):
supported_keys = [key for key, value in supportedModels.items() if value.get('supported')]
return supported_keys
def exportModel(self, model, config):
model.mlModelSaverConfig = config
isModelSupporter = supportedModels.get(
config.get("modelType", ''),
{}
).get("supported", False)
if not isModelSupporter:
raise ValueError(f'only {self.showSupportedModels()} are supported and {config.get("modelType", '')} is not supported')
print(model.mlModelSaverConfig)
# modelName = config['modelName']
# modelsConfig[modelName] = {}
# modelsConfig[modelName]['name'] = modelName
# model = config['model']
# inputs = config['inputs']
# output = config['output']
# transformers = config.get('transformers', [])
# description = config['description']
# modelsConfig[modelName]['description'] = description
# modelsConfig[modelName]['inputs'] = inputs
# if len(transformers) > 0:
# modelsConfig[modelName]['transformers'] = transformers
# modelsConfig[modelName]['output'] = output
# modelType = config.get('modelType', '')
# modelsConfig[modelName]['modelType'] = modelType
# if hasattr(model, 'customMetrics'):
# customMetrics = model.customMetrics
# modelsConfig[modelName]['customMetrics'] = customMetrics
# else:
# pass
# filename = f'{baseRelativePath}/models/{modelName}'
# pickle.dump(model, open(filename, 'wb'))
# with open(f'{baseRelativePath}/models/configs.json', "w") as outputFile:
# json.dump(modelsConfig, outputFile, indent = 4)
# loaded_model = pickle.load(open(filename, 'rb'))
# return loaded_model

View File

@ -1,6 +1,6 @@
{ {
"name": "mlModelSaver", "name": "mlModelSaver",
"version": "1.0.10", "version": "1.0.11",
"description": "Make life easier for save and serving ml models", "description": "Make life easier for save and serving ml models",
"main": "index.js", "main": "index.js",
"repository": "git@github.com:smartdev-ca/mlModelSaver.git", "repository": "git@github.com:smartdev-ca/mlModelSaver.git",

View File

@ -0,0 +1,73 @@
# test_mlModelSaver.py
import sys
import os
sys.path.insert(
0,
os.path.abspath(
os.path.join(
os.path.dirname(__file__),
'../mlModelSaver'
)
)
)
def test_ensureCLassInstance():
from mlModelSaver import MlModelSaver
mlModelSaverInstance1 = MlModelSaver({
"baseRelativePath": "test_baseRelativePath",
"modelsFolder": "test_modelsFolder"
})
assert mlModelSaverInstance1.baseRelativePath == "test_baseRelativePath"
assert mlModelSaverInstance1.modelsFolder == "test_modelsFolder"
tesSupportedModels = mlModelSaverInstance1.showSupportedModels()
assert tesSupportedModels == ['sm.OLS']
def test_OLS_LinearRegression():
from mlModelSaver import MlModelSaver
import numpy as np
import pandas as pd
import statsmodels.api as sm
salaryMisDf = pd.read_excel("./datasets/Salary_MIS.xlsx")
salaryBasedOnGpaMisStatistics = sm.OLS(
salaryMisDf["Salary"],
sm.add_constant(salaryMisDf[["GPA", "MIS", "Statistics"]])
)
salaryBasedOnGpaMisStatisticsFit = salaryBasedOnGpaMisStatistics.fit()
mlModelSaverInstance2 = MlModelSaver({
"baseRelativePath": ".",
"modelsFolder": "~~tmp/models"
})
mlModelSaverInstance2.exportModel(
salaryBasedOnGpaMisStatisticsFit,
{
"modelName": "salaryBasedOnGpaMisStatisticsFit",
"description": "Predict Salary based on GPA MIS Statistics for sallaryMisDf",
"modelType": "sm.OLS",
"inputs": [
{
"name": "GPA",
"type": "float",
},
{
"name": "MIS",
"type": "binary"
},
{
"name": "Statistics",
"type": "binary"
}
],
"output": [
{
"name": "Salary",
"type": "int"
}
]
}
)
assert 2 == 2

View File

@ -8,6 +8,8 @@ new_version=$(node -p "require('./package.json').version")
rm -rf build rm -rf build
rm -rf dist rm -rf dist
pytest -s -v
python setup.py sdist bdist_wheel python setup.py sdist bdist_wheel
twine upload dist/* twine upload dist/*

View File

@ -1,8 +1,11 @@
autopep8==2.2.0
certifi==2024.6.2 certifi==2024.6.2
charset-normalizer==3.3.2 charset-normalizer==3.3.2
docutils==0.21.2 docutils==0.21.2
et-xmlfile==1.1.0
idna==3.7 idna==3.7
importlib_metadata==7.1.0 importlib_metadata==7.1.0
iniconfig==2.0.0
jaraco.classes==3.4.0 jaraco.classes==3.4.0
jaraco.context==5.3.0 jaraco.context==5.3.0
jaraco.functools==4.0.1 jaraco.functools==4.0.1
@ -11,15 +14,29 @@ markdown-it-py==3.0.0
mdurl==0.1.2 mdurl==0.1.2
more-itertools==10.3.0 more-itertools==10.3.0
nh3==0.2.17 nh3==0.2.17
numpy==1.26.4
openpyxl==3.1.4
packaging==24.1
pandas==2.2.2
patsy==0.5.6
pkginfo==1.11.1 pkginfo==1.11.1
pluggy==1.5.0
pycodestyle==2.11.1
Pygments==2.18.0 Pygments==2.18.0
pytest==8.2.2
python-dateutil==2.9.0.post0
pytz==2024.1
readme_renderer==43.0 readme_renderer==43.0
requests==2.32.3 requests==2.32.3
requests-toolbelt==1.0.0 requests-toolbelt==1.0.0
rfc3986==2.0.0 rfc3986==2.0.0
rich==13.7.1 rich==13.7.1
scipy==1.13.1
setuptools==70.0.0 setuptools==70.0.0
six==1.16.0
statsmodels==0.14.2
twine==5.1.0 twine==5.1.0
tzdata==2024.1
urllib3==2.2.1 urllib3==2.2.1
wheel==0.43.0 wheel==0.43.0
zipp==3.19.2 zipp==3.19.2

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name='mlModelSaver', name='mlModelSaver',
version='1.0.10', version='1.0.11',
packages=find_packages(), packages=find_packages(),
description='Make life easier for saving and serving ML models', description='Make life easier for saving and serving ML models',
long_description=open('DOCS.md').read(), # Assumes you have a README.md file long_description=open('DOCS.md').read(), # Assumes you have a README.md file