PyMilo: Python for ML I/O
Project description
Overview
PyMilo is an open source Python package that provides a simple, efficient, and safe way for users to export pre-trained machine learning models in a transparent way. By this, the exported model can be used in other environments, transferred across different platforms, and shared with others. PyMilo allows the users to export the models that are trained using popular Python libraries like scikit-learn, and then use them in deployment environments, or share them without exposing the underlying code or dependencies. The transparency of the exported models ensures reliability and safety for the end users, as it eliminates the risks of binary or pickle formats.
| PyPI Counter |
|
| Github Stars |
|
| Branch | main | dev |
| CI |
|
|
| Code Quality |
Installation
PyPI
- Check Python Packaging User Guide
- Run
pip install pymilo==1.5
Source code
- Download Version 1.5 or Latest Source
- Run
pip install .
Conda
- Check Conda Managing Package
- Update Conda using
conda update conda - Run
conda install -c openscilab pymilo
Usage
Import/Export
Imagine you want to train a LinearRegression model representing this equation: $y = x_0 + 2x_1 + 3$. You will create data points (X, y) and train your model as follows.
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3
# y = 1 * x_0 + 2 * x_1 + 3
model = LinearRegression().fit(X, y)
pred = model.predict(np.array([[3, 5]]))
# pred = [16.] (=1 * 3 + 2 * 5 + 3)
Using PyMilo Export class you can easily serialize and export your trained model into a JSON file.
from pymilo import Export
Export(model).save("model.json")
Export
The Export class facilitates exporting of machine learning models to JSON files.
| Parameter | Description |
|---|---|
| model | The machine learning model to be exported |
| Property | Description |
|---|---|
| data | The serialized model data including all learned parameters |
| version | The scikit-learn version used to train the model |
| type | The type/class name of the exported model |
| Method | Description |
|---|---|
| save | Save the exported model to a JSON file |
| to_json | Return the model as a JSON string representation |
| batch_export | Export multiple models to individual JSON files in a directory |
You can check out your model as a JSON file now.
{
"data": {
"fit_intercept": true,
"copy_X": true,
"n_jobs": null,
"positive": false,
"n_features_in_": 2,
"coef_": {
"pymiloed-ndarray-list": [
1.0000000000000002,
1.9999999999999991
],
"pymiloed-ndarray-dtype": "float64",
"pymiloed-ndarray-shape": [
2
],
"pymiloed-data-structure": "numpy.ndarray"
},
"rank_": 2,
"singular_": {
"pymiloed-ndarray-list": [
1.618033988749895,
0.6180339887498948
],
"pymiloed-ndarray-dtype": "float64",
"pymiloed-ndarray-shape": [
2
],
"pymiloed-data-structure": "numpy.ndarray"
},
"intercept_": {
"value": 3.0000000000000018,
"np-type": "numpy.float64"
}
},
"sklearn_version": "1.4.2",
"pymilo_version": "0.8",
"model_type": "LinearRegression"
}
You can see all the learned parameters of the model in this file and change them if you want. This JSON representation is a transparent version of your model.
Now let's load it back. You can do it easily by using PyMilo Import class.
from pymilo import Import
model = Import("model.json").to_model()
pred = model.predict(np.array([[3, 5]]))
# pred = [16.] (=1 * 3 + 2 * 5 + 3)
Import
The Import class facilitates importing of serialized models from JSON files, JSON strings, or URLs.
| Parameter | Description |
|---|---|
| file_adr | Path to the JSON file containing the serialized model |
| json_dump | JSON string representation of the serialized model |
| url | URL to download the serialized model from |
| Property | Description |
|---|---|
| data | The deserialized model data |
| version | The scikit-learn version of the original model |
| type | The type/class name of the imported model |
| Method | Description |
|---|---|
| to_model | Convert the imported data back to a scikit-learn model |
| batch_import | Import multiple models from JSON files in a directory |
This loaded model is exactly the same as the original trained model.
ML streaming
You can easily serve your ML model from a remote server using ML streaming feature of PyMilo.
⚠️ ML streaming feature exists in versions >=1.0
⚠️ In order to use ML streaming feature, make sure you've installed the streaming mode of PyMilo
⚠️ The ML streaming feature is under construction and is not yet considered stable.
You can choose either REST or WebSocket as the communication medium protocol.
Server
Let's assume you are in the remote server and you want to import the exported JSON file and start serving your model through REST protocol!
from pymilo import Import
from pymilo.streaming import PymiloServer, CommunicationProtocol
my_model = Import("model.json").to_model()
communicator = PymiloServer(
model=my_model,
port=8000,
communication_protocol=CommunicationProtocol["REST"],
).communicator
communicator.run()
PymiloServer
The PymiloServer class facilitates streaming machine learning models over a network.
| Parameter | Description |
|---|---|
| port | Port number for the server to listen on (default: 8000) |
| host | Host address for the server (default: "127.0.0.1") |
| compressor | Compression method from Compression enum |
| communication_protocol | Communication protocol from CommunicationProtocol enum |
The compressor parameter accepts values from the Compression enum including NULL (no compression), GZIP, ZLIB, LZMA, or BZ2. The communication_protocol parameter accepts values from the CommunicationProtocol enum including REST or WEBSOCKET.
| Method | Description |
|---|---|
| init_client | Initialize a new client with the given client ID |
| remove_client | Remove an existing client by client ID |
| init_ml_model | Initialize a new ML model for a given client |
| set_ml_model | Set or update the ML model for a client |
| remove_ml_model | Remove an existing ML model for a client |
| get_ml_models | Get all ML model IDs for a client |
| execute_model | Execute model methods or access attributes |
| grant_access | Allow a client to access another client's model |
| revoke_access | Revoke access to a client's model |
| get_allowed_models | Get models a client is allowed to access |
Now PymiloServer runs on port 8000 and exposes REST API to upload, download and retrieve attributes either data attributes like model._coef or method attributes like model.predict(x_test).
ℹ️ By default, PymiloServer listens on the loopback interface (127.0.0.1). To make it accessible over a local network (LAN), specify your machine’s LAN IP address in the host parameter of the PymiloServer constructor.
Client
By using PymiloClient you can easily connect to the remote PymiloServer and execute any functionalities that the given ML model has, let's say you want to run predict function on your remote ML model and get the result:
from pymilo.streaming import PymiloClient, CommunicationProtocol
pymilo_client = PymiloClient(
mode=PymiloClient.Mode.LOCAL,
server_url="SERVER_URL",
communication_protocol=CommunicationProtocol["REST"],
)
pymilo_client.toggle_mode(PymiloClient.Mode.DELEGATE)
result = pymilo_client.predict(x_test)
PymiloClient
The PymiloClient class facilitates working with remote PyMilo servers.
| Parameter | Description |
|---|---|
| model | The local ML model to wrap around |
| mode | Operating mode (LOCAL or DELEGATE) |
| compressor | Compression method from Compression enum |
| server_url | URL of the PyMilo server |
| communication_protocol | Communication protocol from CommunicationProtocol enum |
The mode parameter accepts two values LOCAL to execute operations on the local model, or DELEGATE to delegate operations to the remote server. The compressor parameter accepts values from the Compression enum including NULL (no compression), GZIP, ZLIB, LZMA, or BZ2. The communication_protocol parameter accepts values from the CommunicationProtocol enum including REST or WEBSOCKET.
| Method | Description |
|---|---|
| toggle_mode | Switch between LOCAL and DELEGATE modes |
| register | Register the client with the remote server |
| deregister | Deregister the client from the server |
| register_ml_model | Register an ML model with the server |
| deregister_ml_model | Deregister an ML model from the server |
| upload | Upload the local model to the remote server |
| download | Download the remote model to local |
| get_ml_models | Get all registered ML models for this client |
| grant_access | Grant access to this client's model to another client |
| revoke_access | Revoke access previously granted to another client |
| get_allowance | Get clients who have access to this client's models |
| get_allowed_models | Get models this client is allowed to access from another client |
ℹ️ If you've deployed PymiloServer locally (on port 8000 for instance), then SERVER_URL would be http://127.0.0.1:8000 or ws://127.0.0.1:8000 based on the selected protocol for the communication medium.
You can also download the remote ML model into your local and execute functions locally on your model.
Calling download function on PymiloClient will sync the local model that PymiloClient wraps upon with the remote ML model, and it doesn't save model directly to a file.
pymilo_client.download()
If you want to save the ML model to a file in your local, you can use Export class.
from pymilo import Export
Export(pymilo_client.model).save("model.json")
Now that you've synced the remote model with your local model, you can run functions.
pymilo_client.toggle_mode(mode=PymiloClient.Mode.LOCAL)
result = pymilo_client.predict(x_test)
PymiloClient wraps around the ML model, either to the local ML model or the remote ML model, and you can work with PymiloClient in the exact same way that you did with the ML model, you can run exact same functions with same signature.
ℹ️ Through the usage of toggle_mode function you can specify whether PymiloClient applies requests on the local ML model pymilo_client.toggle_mode(mode=Mode.LOCAL) or delegates it to the remote server pymilo_client.toggle_mode(mode=Mode.DELEGATE)
Supported ML models
| scikit-learn | PyTorch |
|---|---|
| Linear Models ✅ | - |
| Neural Networks ✅ | - |
| Trees ✅ | - |
| Clustering ✅ | - |
| Naïve Bayes ✅ | - |
| Support Vector Machines (SVMs) ✅ | - |
| Nearest Neighbors ✅ | - |
| Ensemble Models ✅ | - |
| Pipeline Model ✅ | - |
| Preprocessing Models ✅ | - |
| Cross Decomposition Models ✅ | - |
| Feature Extractor Models ✅ | - |
| Composite Models ✅ | - |
Details are available in Supported Models.
Issues & bug reports
Just fill an issue and describe it. We'll check it ASAP! or send an email to pymilo@openscilab.com.
- Please complete the issue template
You can also join our discord server
Contributing
We welcome contributions! Please read our Contributing Guidelines before submitting any changes.
Acknowledgments
Python Software Foundation (PSF) grants PyMilo library partially for versions 1.0, 1.1. PSF is the organization behind Python. Their mission is to promote, protect, and advance the Python programming language and to support and facilitate the growth of a diverse and international community of Python programmers.
Trelis Research grants PyMilo library partially for version 1.0. Trelis Research provides tools and tutorials for businesses and developers looking to fine-tune and deploy large language models.
Cite
If you use PyMilo in your research, we would appreciate citations to the following paper:
@article{Rostami2025,
doi = {10.21105/joss.08858},
url = {https://doi.org/10.21105/joss.08858},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {116},
pages = {8858},
author = {Rostami, AmirHosein and Haghighi, Sepand and Sabouri, Sadra and Zolanvari, Alireza},
title = {PyMilo: A Python Library for ML I/O},
journal = {Journal of Open Source Software}
}
Download PyMilo.bib
Show your support
Star this repo
Give a ⭐️ if this project helped you!
Donate to our project
If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
1.5 - 2026-01-26
Added
_is_remainder_cols_listfunction in GeneralDataStructureTransporterComposeTransporterTransporter- Composite params initialized in
pymilo_param.py get_transporterinchains/util.pydeserialize_possible_ml_modelinchains/util.pyserialize_possible_ml_modelinchains/util.pyTransformedTargetRegressormodelColumnTransformermodel- Composite models test runner
- Composite models chain
- JOSS paper
Changed
serializefunction in FunctionTransporterserialize_splinefunction in PreprocessingTransporterdeserialize_splinefunction in PreprocessingTransporter- Ensemble models test runner
get_deserialized_listfunction in GeneralDataStructureTransporterdeserializefunction in GeneralDataStructureTransporterserializefunction in GeneralDataStructureTransporterget_deserialized_dictfunction in GeneralDataStructureTransporterserialize_dictfunction in GeneralDataStructureTransporterserialize_tuplefunction in GeneralDataStructureTransporter- Test system modified
README.mdupdated
Removed
get_transporterinensemble_chain.pydeserialize_possible_ml_modelinensemble_chain.pyserialize_possible_ml_modelinensemble_chain.py
1.4 - 2025-12-01
Added
get_allowed_modelsfunction inPymiloClientget_allowancefunction inPymiloClientrevoke_accessfunction inPymiloClientgrant_accessfunction inPymiloClientget_ml_modelsfunction inPymiloClientderegister_ml_modelfunction inPymiloClientregister_ml_modelfunction inPymiloClientderegisterfunction inPymiloClientregisterfunction inPymiloClientREST_API_PREFIXfunction instreaming.param.pyregister_clientfunction inRESTClientCommunicatorremove_clientfunction inRESTClientCommunicatorregister_modelfunction inRESTClientCommunicatorremove_modelfunction inRESTClientCommunicatorget_ml_modelsfunction inRESTClientCommunicatorgrant_accessfunction inRESTClientCommunicatorrevoke_accessfunction inRESTClientCommunicatorget_allowancefunction inRESTClientCommunicatorget_allowed_modelsfunction inRESTClientCommunicator_validate_idfunction inPymiloServerinit_clientfunction inPymiloServerremove_clientfunction inPymiloServergrant_accessfunction inPymiloServerrevoke_accessfunction inPymiloServerget_allowed_modelsfunction inPymiloServerget_clients_allowancefunction inPymiloServerget_clientsfunction inPymiloServerinit_ml_modelfunction inPymiloServerset_ml_modelfunction inPymiloServerremove_ml_modelfunction inPymiloServerget_ml_modelsfunction inPymiloServer
Changed
is_callable_attributefunction inPymiloServerexecute_modelfunction inPymiloServerupdate_modelfunction inPymiloServerexport_modelfunction inPymiloServer__getattr__inPymiloClientuploadfunction inPymiloClientdownloadfunction inPymiloClientencrypt_compressfunction inPymiloClientClientCommunicatorinterfacehandle_messagefunction inWebSocketServerCommunicator_handle_downloadfunction inWebSocketServerCommunicatorsetup_routesfunction inRESTServerCommunicator__init__function inRESTClientCommunicatordownloadfunction inRESTClientCommunicatoruploadfunction inRESTClientCommunicatorattribute_callfunction inRESTClientCommunicatorattribute_typefunction inRESTClientCommunicatorREADME.mdupdated__init__function inPyMiloServer- Test system modified
Python 3.14added totest.yml
Removed
- Python 3.6 support
1.3 - 2025-02-26
Added
TfidfVectorizerfeature extractorTfidfTransformerfeature extractorHashingVectorizerfeature extractorCountVectorizerfeature extractorPatchExtractorfeature extractorDictVectorizerfeature extractorFeatureHasherfeature extractorFeatureExtractorTransporterTransporterFeatureExtractionsupport added to Ensemble chain- FeatureExtraction params initialized in
pymilo_param.py - Feature Extraction models test runner
- Zenodo badge to
README.md
Changed
get_deserialized_listinGeneralDataStructureTransporterget_deserialized_dictinGeneralDataStructureTransporterserializeinGeneralDataStructureTransporterserialize_tupleinGeneralDataStructureTransporterAttributeCallPayloadinstreaming.communicator.pyget_deserialized_regular_primary_typesinGeneralDataStructureTransporter- Test system modified
1.2 - 2025-01-22
Added
generate_dockerfiletestcasesgenerate_dockerfilefunction instreaming.util.pycitesection inREADME.mdCLIhandlerprint_supported_ml_modelsfunction inpymilo_func.pypymilo_helpfunction inpymilo_func.pySKLEARN_SUPPORTED_CATEGORIESinpymilo_param.pyOVERVIEWinpymilo_param.pyget_sklearn_classinutils.util.py
Changed
ML Streamingtestcases modified to use PyMilo CLIto_pymilo_issuefunction inPymiloExceptionvalid_url_valid_filetestcase added intest_exceptions.pyvalid_url_valid_filefunction inimport_exceptions.pyStandardPayloadinRESTServerCommunicator- testcase for LogisticRegressionCV, LogisticRegression
README.mdupdatedAUTHORS.mdupdated
1.1 - 2024-11-25
Added
is_socket_closedfunction instreaming.communicator.pyvalidate_http_urlfunction instreaming.util.pyvalidate_websocket_urlfunction instreaming.util.pyML StreamingWebSocket testcasesCommunicationProtocolEnum instreaming.communicator.pyWebSocketClientCommunicatorclass instreaming.communicator.pyWebSocketServerCommunicatorclass instreaming.communicator.py- batch operation testcases
batch_exportfunction inpymilo/pymilo_obj.pybatch_importfunction inpymilo/pymilo_obj.pyCCAmodelPLSCanonicalmodelPLSRegressionmodel- Cross decomposition models test runner
- Cross decomposition chain
- PyMilo exception types added in
pymilo/exceptions/__init__.py - PyMilo exception types added in
pymilo/__init__.py
Changed
coreandstreamingtests divided intest.ymlcommunication_protocolparameter added toPyMiloClientclasscommunication_protocolparameter added toPyMiloServerclassML Streamingtestcases updated to support protocol selectionREADME.mdupdated- Tests config modified
- Cross decomposition params initialized in
pymilo_param - Cross decomposition support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated- GitHub actions are limited to the
devandmainbranches Python 3.13added totest.yml
1.0 - 2024-09-16
Added
- Compression method test in
ML StreamingRESTful testcases CLIhandler intests/test_ml_streaming/run_server.pyCompressionEnum instreaming.compressor.pyGZIPCompressorclass instreaming.compressor.pyZLIBCompressorclass instreaming.compressor.pyLZMACompressorclass instreaming.compressor.pyBZ2Compressorclass instreaming.compressor.pyencrypt_compressfunction inPymiloClientparsefunction inRESTServerCommunicatoris_callable_attributefunction inPymiloServerstreaming.param.pyattribute_typefunction inRESTServerCommunicatorAttributeTypePayloadclass inRESTServerCommunicatorattribute_typefunction inRESTClientCommunicatorModeEnum inPymiloClient- Import from url testcases
download_modelfunction inutils.util.pyPymiloServerclass instreaming.pymilo_server.pyPymiloClientclass inPymiloClientCommunicatorinterface instreaming.interfaces.pyRESTClientCommunicatorclass instreaming.communicator.pyRESTServerCommunicatorclass instreaming.communicator.pyCompressorinterface instreaming.interfaces.pyDummyCompressorclass instreaming.compressor.pyEncryptorinterface instreaming.interfaces.pyDummyEncryptorclass instreaming.encryptor.pyML StreamingRESTful testcasesstreaming-requirements.txt
Changed
README.mdupdatedML StreamingRESTful testcasesattribute_callfunction inRESTServerCommunicatorAttributeCallPayloadclass inRESTServerCommunicator- upload function in
RESTClientCommunicator - download function in
RESTClientCommunicator __init__function inRESTClientCommunicatorattribute_callsfunction inRESTClientCommunicatorrequestsadded torequirements.txtuvicorn,fastapi,requestsandpydanticadded todev-requirements.txtML StreamingRESTful testcases__init__function inPymiloServer__getattr__function inPymiloClient__init__function inPymiloClienttoggle_modefunction inPymiloClientuploadfunction inPymiloClientdownloadfunction inPymiloClient__init__function inPymiloServerserialize_cfnodefunction intransporters.cfnode_transporter.py__init__function inImportclassserializefunction intransporters.tree_transporter.pydeserializefunction intransporters.tree_transporter.pyserializefunction intransporters.sgdoptimizer_transporter.pydeserializefunction intransporters.sgdoptimizer_transporter.pyserializefunction intransporters.randomstate_transporter.pydeserializefunction intransporters.randomstate_transporter.pyserializefunction intransporters.bunch_transporter.pydeserializefunction intransporters.bunch_transporter.pyserializefunction intransporters.adamoptimizer_transporter.pydeserializefunction intransporters.adamoptimizer_transporter.pyserialize_linear_modelfunction inchains.linear_model_chain.pyserialize_ensemblefunction inchains.ensemble_chain.pyserializefunction inGeneralDataStructureTransporterTransporter refactoredget_deserialized_listfunction inGeneralDataStructureTransporterTransporter refactoredExportclass call by reference bug fixed
0.9 - 2024-07-01
Added
- Anaconda workflow
prefix_listfunction inutils.util.pyKBinsDiscretizerpreprocessing modelPowerTransformerpreprocessing modelSplineTransformerpreprocessing modelTargetEncoderpreprocessing modelQuantileTransformerpreprocessing modelRobustScalerpreprocessing modelPolynomialFeaturespreprocessing modelOrdinalEncoderpreprocessing modelNormalizerpreprocessing modelMaxAbsScalerpreprocessing modelMultiLabelBinarizerpreprocessing modelKernelCentererpreprocessing modelFunctionTransformerpreprocessing modelBinarizerpreprocessing model- Preprocessing models test runner
Changed
Commandenum class intransporter.pySerializationErrorTypesenum class inserialize_exception.pyDeserializationErrorTypesenum class indeserialize_exception.pymeta.yamlmodifiedNaNtype inpymilo_paramNaNtype transportation inGeneralDataStructureTransporterTransporterBSplineTransportation inPreprocessingTransporterTransporter- one layer deeper transportation in
PreprocessingTransporterTransporter - dictating outer ndarray dtype in
GeneralDataStructureTransporterTransporter - preprocessing params fulfilled in
pymilo_param SUPPORTED_MODELS.mdupdatedREADME.mdupdatedserialize_possible_ml_modelin the Ensemble chain
0.8 - 2024-05-06
Added
StandardScalerTransformer inpymilo_param.pyPreprocessingTransporterTransporter- ndarray shape config in
GeneralDataStructureTransporter util.pyin chainsBinMapperTransporterTransporterBunchTransporterTransporterGeneratorTransporterTransporterTreePredictorTransporterTransporterAdaboostClassifiermodelAdaboostRegressormodelBaggingClassifiermodelBaggingRegressormodelExtraTreesClassifiermodelExtraTreesRegressormodelGradientBoosterClassifiermodelGradientBoosterRegressormodelHistGradientBoosterClassifiermodelHistGradientBoosterRegressormodelRandomForestClassifiermodelRandomForestRegressormodelIsolationForestmodelRandomTreesEmbeddingmodelStackingClassifiermodelStackingRegressormodelVotingClassifiermodelVotingRegressormodelPipelinemodel- Ensemble models test runner
- Ensemble chain
SECURITY.md
Changed
Pipelinetest updatedLabelBinarizer,LabelEncoderandOneHotEncodergot embedded inPreprocessingTransporter- Preprocessing support added to Ensemble chain
- Preprocessing params initialized in
pymilo_param util.pyin utils updatedtest_pymilo.pyupdatedpymilo_func.pyupdatedlinear_model_chain.pyupdatedneural_network_chain.pyupdateddecision_tree_chain.pyupdatedclustering_chain.pyupdatednaive_bayes_chain.pyupdatedneighbours_chain.pyupdatedsvm_chain.pyupdatedGeneralDataStructureTransporter updatedLossFunctionTransporter updatedAbstractTransporterupdated- Tests config modified
- Unequal sklearn version error added in
pymilo_param.py - Ensemble params initialized in
pymilo_param - Ensemble support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.7 - 2024-04-03
Added
pymilo_nearest_neighbor_testfunction added totest_pymilo.pyNeighborsTreeTransporterTransporterLocalOutlierFactormodelRadiusNeighborsClassifiermodelRadiusNeighborsRegressormodelNearestCentroidmodelNearestNeighborsmodelKNeighborsClassifiermodelKNeighborsRegressormodel- Neighbors models test runner
- Neighbors chain
Changed
- Tests config modified
- Neighbors params initialized in
pymilo_param - Neighbors support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.6 - 2024-03-27
Added
deserialize_primitive_typefunction inGeneralDataStructureTransporteris_deserialized_ndarrayfunction inGeneralDataStructureTransporterdeep_deserialize_ndarrayfunction inGeneralDataStructureTransporterdeep_serialize_ndarrayfunction inGeneralDataStructureTransporterSVRmodelSVCmodelOne Class SVMmodelNuSVRmodelNuSVCmodelLinear SVRmodelLinear SVCmodel- SVM models test runner
- SVM chain
Changed
pymilo_param.pyupdatedpymilo_obj.pyupdated to use predefined stringsTreeTransporterupdatedget_homogeneous_typefunction inutil.pyupdatedGeneralDataStructureTransporterupdated to use deep ndarray serializer & deserializercheck_str_in_iterableupdatedLabel BinarizerTransporter updatedFunctionTransporter updatedCFNodeTransporter updatedBisecting TreeTransporter updated- Tests config modified
- SVM params initialized in
pymilo_param - SVM support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.5 - 2024-01-31
Added
resetfunction in theTransportinterfaceresetfunction implementation inAbstractTransporterGaussian Naive Bayesdeclared asGaussianNBmodelMultinomial Naive Bayesmodel declared asMultinomialNBmodelComplement Naive Bayesmodel declared asComplementNBmodelBernoulli Naive Bayesmodel declared asBernoulliNBmodelCategorical Naive Bayesmodel declared asCategoricalNBmodel- Naive Bayes models test runner
- Naive Bayes chain
Changed
Transportfunction ofAbstractTransporterupdated- fix the order of
CFNodefields serialization inCFNodeTransporter GeneralDataStructureTransportersupport list of ndarray with different shapes- Tests config modified
- Naive Bayes params initialized in
pymilo_param - Naive Bayes support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.4 - 2024-01-22
Added
has_named_parametermethod inutil.pyCFSubclusterTransporter(insideCFNodeTransporter)CFNodeTransporterBirchmodelSpectralBiclusteringmodelSpectralCoclusteringmodelMiniBatchKMeansmodelfeature_request.ymltemplateconfig.ymlfor issue templateBayesianGaussianMixturemodelserialize_tuplemethod inGeneralDataStructureTransporterimport_functionmethod inutil.pyFunctionTransporterFeatureAgglomerationmodelHDBSCANmodelGaussianMixturemodelOPTICSmodelDBSCANmodelAgglomerativeClusteringmodelSpectralClusteringmodelMeanShiftmodelAffinityPropagationmodelKmeansmodel- Clustering models test runner
- Clustering chain
Changed
LossFunctionTransporterenhanced to handle scikit 1.4.0_loss_function_field- Codacy Static Code Analyzer's suggestions applied
- Spectral Clustering test folder refactored
- Bug report template modified
GeneralDataStructureTransporterupdated- Tests config modified
- Clustering data set preparation added to
data_exporter.py - Clustering params initialized in
pymilo_param - Clustering support added to
pymilo_func.py Python 3.12added totest.ymldev-requirements.txtupdated- Code quality badges added to
README.md SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.3 - 2023-09-27
Added
- scikit-learn decision tree models
ExtraTreeClassifiermodelExtraTreeRegressormodelDecisionTreeClassifiermodelDecisionTreeRegressormodelTreeTransporter- Decision Tree chain
Changed
- Tests config modified
- DecisionTree params initialized in
pymilo_param - Decision Tree support added to
pymilo_func.py
0.2 - 2023-08-02
Added
- scikit-learn neural network models
MLP RegressormodelMLP ClassifiermodelBernoulliRBNmodelSGDOptimizertransporterRandomState(MT19937)transporterAdamoptimizertransporter- Neural Network chain
- Neural Network exceptions
ndarray_to_listmethod inGeneralDataStructureTransporterlist_to_ndarraymethod inGeneralDataStructureTransporterneural_network_chain.pychain
Changed
GeneralDataStructureTransporter updatedLabelBinerizerTransporter updatedlinear modelchain updated- GeneralDataStructure transporter enhanced
- LabelBinerizer transporter updated
- transporters' chain router added to
pymilo func - NeuralNetwork params initialized in
pymilo_param pymilo_testupdated to support multiple modelslinear_model_chainrefactored
0.1 - 2023-06-29
Added
- scikit-learn linear models support
ExportclassImportclass
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymilo-1.5.tar.gz.
File metadata
- Download URL: pymilo-1.5.tar.gz
- Upload date:
- Size: 75.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46862e0582cc167286b8f7c60b9b35f089525cb4eab9c5ddb57680f634e6e9c8
|
|
| MD5 |
6d69f20066b00cfa86d9b01c0e14344f
|
|
| BLAKE2b-256 |
e0e73a13180df6eea6b68aa24f92f396c01f503d3ac062bf22e715be1bcb0d35
|
File details
Details for the file pymilo-1.5-py3-none-any.whl.
File metadata
- Download URL: pymilo-1.5-py3-none-any.whl
- Upload date:
- Size: 87.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98e9dc30e153800863fc8d643dd818707bf590172bdfe7bbd8028e824c3fd813
|
|
| MD5 |
965da1b3db7ac398f0dabfa6b69a625a
|
|
| BLAKE2b-256 |
f9a704d937a972c8c38508ce2d8ab0cee7015c8021efa43cb89bb4f3a11a44a0
|