{ "info": { "author": "Xavier Dupr\u00e9", "author_email": "xavier.dupre@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Education", "Topic :: Scientific/Engineering" ], "description": "\n.. image:: https://github.com/sdpython/mlprodict/blob/master/_doc/sphinxdoc/source/phdoc_static/project_ico.png?raw=true\n :target: https://github.com/sdpython/mlprodict/\n\n.. _l-README:\n\nmlprodict\n=========\n\n.. image:: https://travis-ci.org/sdpython/mlprodict.svg?branch=master\n :target: https://travis-ci.org/sdpython/mlprodict\n :alt: Build status\n\n.. image:: https://ci.appveyor.com/api/projects/status/g8chk1ufyk1m8uep?svg=true\n :target: https://ci.appveyor.com/project/sdpython/mlprodict\n :alt: Build Status Windows\n\n.. image:: https://circleci.com/gh/sdpython/mlprodict/tree/master.svg?style=svg\n :target: https://circleci.com/gh/sdpython/mlprodict/tree/master\n\n.. image:: https://dev.azure.com/xavierdupre3/mlprodict/_apis/build/status/sdpython.mlprodict\n :target: https://dev.azure.com/xavierdupre3/mlprodict/\n\n.. image:: https://badge.fury.io/py/mlprodict.svg\n :target: https://pypi.org/project/mlprodict/\n\n.. image:: https://img.shields.io/badge/license-MIT-blue.svg\n :alt: MIT License\n :target: http://opensource.org/licenses/MIT\n\n.. image:: https://requires.io/github/sdpython/mlprodict/requirements.svg?branch=master\n :target: https://requires.io/github/sdpython/mlprodict/requirements/?branch=master\n :alt: Requirements Status\n\n.. image:: https://codecov.io/github/sdpython/mlprodict/coverage.svg?branch=master\n :target: https://codecov.io/github/sdpython/mlprodict?branch=master\n\n.. image:: http://img.shields.io/github/issues/sdpython/mlprodict.png\n :alt: GitHub Issues\n :target: https://github.com/sdpython/mlprodict/issues\n\n.. image:: http://www.xavierdupre.fr/app/mlprodict/helpsphinx/_images/nbcov.png\n :target: http://www.xavierdupre.fr/app/mlprodict/helpsphinx/all_notebooks_coverage.html\n :alt: Notebook Coverage\n\n.. image:: https://pepy.tech/badge/mlprodict/month\n :target: https://pepy.tech/project/mlprodict/month\n :alt: Downloads\n\n.. image:: https://img.shields.io/github/forks/sdpython/mlprodict.svg\n :target: https://github.com/sdpython/mlprodict/\n :alt: Forks\n\n.. image:: https://img.shields.io/github/stars/sdpython/mlprodict.svg\n :target: https://github.com/sdpython/mlprodict/\n :alt: Stars\n\n.. image:: https://mybinder.org/badge_logo.svg\n :target: https://mybinder.org/v2/gh/sdpython/mlprodict/master?filepath=_doc%2Fnotebooks\n\nThe packages explores ways to productionize machine learning predictions.\nOne approach uses *ONNX* and tries to implement\na runtime in python / numpy or wraps\n`onnxruntime `_\ninto a single class. The package provides tools to compare\npredictions, to benchmark models converted with\n`sklearn-onnx `_.\nThe second approach consists in converting\na pipeline directly into C and is not much developed.\n\n::\n\n from sklearn.linear_model import LinearRegression\n from sklearn.datasets import load_iris\n from mlprodict.onnxrt import OnnxInference, measure_relative_difference\n import numpy\n\n iris = load_iris()\n X = iris.data[:, :2]\n y = iris.target\n lr = LinearRegression()\n lr.fit(X, y)\n\n # Predictions with scikit-learn.\n expected = lr.predict(X[:5])\n print(expected)\n\n # Conversion into ONNX.\n from mlprodict.onnx_conv import to_onnx\n model_onnx = to_onnx(lr, X.astype(numpy.float32))\n\n # Predictions with onnxruntime\n oinf = OnnxInference(model_onnx, runtime='onnxruntime1')\n ypred = oinf.run({'X': X[:5]})\n print(ypred)\n\n # Measuring the maximum difference.\n print(measure_relative_difference(expected, ypred))\n\n**Installation**\n\nThe project relies on *sklearn-onnx* which is in active\ndevelopment. Continuous integration relies on a specific\nbranch of this project to benefit from the lastest changes:\n\n::\n\n pip install git+https://github.com/xadupre/sklearn-onnx.git@jenkins\n\nThe project is currently in active development.\nIt is safer to install the package directly from\ngithub:\n\n::\n\n pip install git+https://github.com/sdpython/mlprodict.git\n\nOn Linux and Windows, the package must be compiled with\n*openmp*. Full instructions to build the module and run\nthe documentation are described in `config.yml\n`_\nfor Linux. When this project becomes more stable,\nit will changed to be using official releases.\nExperiments with float64 are not supported with\n``sklearn-onnx <= 1.5.0``.\nThe code is available at\n`GitHub/mlprodict `_\nand has `online documentation `_.\n\n.. _l-HISTORY:\n\n=======\nHistory\n=======\n\ncurrent - 2019-09-15 - 0.00Mb\n=============================\n\n* `57`: ONNX: handles dataframe when converting a model (2019-09-15)\n* `56`: ONNX: implements cdist operator (2019-09-12)\n* `54`: ONNX: fix summary, it produces multiple row when model are different when opset is different (2019-09-12)\n* `51`: ONNX: measure the time performance obtained by using optimization (2019-09-11)\n* `52`: ONNC-cli: add a command line to optimize an onnx model (2019-09-10)\n* `49`: ONNX optimization: remove redundant subparts of a graph (2019-09-09)\n* `48`: ONNX optimization: reduce the number of Identity nodes (2019-09-09)\n* `47`: Implements statistics on onnx graph and sklearn models, add them to the documentation (2019-09-06)\n* `46`: Implements KNearestNeibhorsRegressor supporting batch mode (ONNX) (2019-08-31)\n* `45`: KNearestNeighborsRegressor (2019-08-30)\n* `44`: Add an example to look into the performance of every node for a particular dataset (2019-08-30)\n* `43`: LGBMClassifier has wrong shape (2019-08-29)\n\n0.2.452 - 2019-08-28 - 0.13Mb\n=============================\n\n* `42`: Adds a graph which visually summarize the validating benchmark (ONNX). (2019-08-27)\n* `41`: Enables to test multiple number of features at the same time (ONNX) (2019-08-27)\n* `40`: Add a parameter to change the number of featuress when validating a model (ONNX). (2019-08-26)\n* `39`: Add a parameter to dump all models even if they don't produce errors when being validated (ONNX) (2019-08-26)\n* `24`: support double for TreeEnsembleClassifier (python runtime ONNX) (2019-08-23)\n* `38`: See issue on onnxmltools. https://github.com/onnx/onnxmltools/issues/321 (2019-08-19)\n* `35`: Supports parameter time_kwargs in the command line (ONNX) (2019-08-09)\n* `34`: Add intervals when measuring time ratios between scikit-learn and onnx (ONNX) (2019-08-09)\n* `31`: Implements shape inference for the python runtime (ONNX) (2019-08-06)\n* `15`: Tells operator if the execution can be done inplace for unary operators (ONNX). (2019-08-06)\n* `27`: Bug fix (2019-08-02)\n* `23`: support double for TreeEnsembleRegressor (python runtime ONNX) (2019-08-02)\n\n0.2.363 - 2019-08-01 - 0.11Mb\n=============================\n\n* `26`: Tests all converters in separate processeses to make it easier to catch crashes (2019-08-01)\n* `25`: Ensures operator clip returns an array of the same type (ONNX Python Runtime) (2019-07-30)\n* `22`: Implements a function to shake an ONNX model and test float32 conversion (2019-07-28)\n* `21`: Add customized converters (2019-07-28)\n* `20`: Enables support for TreeEnsemble operators in python runtime (ONNX). (2019-07-28)\n* `19`: Enables support for SVM operators in python runtime (ONNX). (2019-07-28)\n* `16`: fix documentation, visual graph are not being rendered in notebooks (2019-07-23)\n* `18`: implements python runtime for SVM (2019-07-20)\n\n0.2.272 - 2019-07-15 - 0.09Mb\n=============================\n\n* `17`: add a mechanism to use ONNX with double computation (2019-07-15)\n* `13`: add automated benchmark of every scikit-learn operator in the documentation (2019-07-05)\n* `12`: implements a way to measure time for each node of the ONNX graph (2019-07-05)\n* `11`: implements a better ZipMap node based on dedicated container (2019-07-05)\n* `8`: implements runtime for decision tree (2019-07-05)\n* `7`: implement python runtime for scaler, pca, knn, kmeans (2019-07-05)\n* `10`: implements full runtime with onnxruntime not node by node (2019-06-16)\n* `9`: implements a onnxruntime runtime (2019-06-16)\n* `6`: first draft of a python runtime for onnx (2019-06-15)\n* `5`: change style highlight-ipython3 (2018-01-05)\n\n0.1.11 - 2017-12-04 - 0.03Mb\n============================\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/sdpython/mlprodict/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.xavierdupre.fr/app/mlprodict/helpsphinx/index.html", "keywords": "mlprodict", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mlprodict", "package_url": "https://pypi.org/project/mlprodict/", "platform": "", "project_url": "https://pypi.org/project/mlprodict/", "project_urls": { "Download": "https://github.com/sdpython/mlprodict/", "Homepage": "http://www.xavierdupre.fr/app/mlprodict/helpsphinx/index.html" }, "release_url": "https://pypi.org/project/mlprodict/0.2.542/", "requires_dist": null, "requires_python": "", "summary": "Python Runtime for ONNX models, other helpers to convert machine learned models in C++.", "version": "0.2.542" }, "last_serial": 5831273, "releases": { "0.1.11": [ { "comment_text": "", "digests": { "md5": "9de611b395b5e5c7a22256163e474cb1", "sha256": "1c8184acd31b1bbdacb379283749e73d47ab9a3f7559397ccb140159d5ab5841" }, "downloads": -1, "filename": "mlprodict-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "9de611b395b5e5c7a22256163e474cb1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 26253, "upload_time": "2017-12-04T14:57:03", "url": "https://files.pythonhosted.org/packages/bc/89/d70fa5c56dc5583e4364422b099047a3df5c6d2554b6b0f05d2196e50cea/mlprodict-0.1.11-py3-none-any.whl" } ], "0.2.272": [ { "comment_text": "", "digests": { "md5": "e39af9b879627faa28e9620eb6b73cb6", "sha256": "1a71ca358470d820e6a21e3f2e50801799685bcdbb3dbe32a32cfe83d7f7d155" }, "downloads": -1, "filename": "mlprodict-0.2.272.tar.gz", "has_sig": false, "md5_digest": "e39af9b879627faa28e9620eb6b73cb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90763, "upload_time": "2019-07-15T12:11:06", "url": "https://files.pythonhosted.org/packages/2d/a6/3c9e190ad9a33295ee4ca354e1e887e6dfc901940230e8ba32b905afcde1/mlprodict-0.2.272.tar.gz" } ], "0.2.363": [ { "comment_text": "", "digests": { "md5": "380159e186eb5a38fc4e8aaea09e705a", "sha256": "e2e2d8e714134a6a9ea7bce28dbf469f0d41aa9b9b20b28d53bd618ba2df2336" }, "downloads": -1, "filename": "mlprodict-0.2.363.tar.gz", "has_sig": false, "md5_digest": "380159e186eb5a38fc4e8aaea09e705a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 116129, "upload_time": "2019-08-01T22:56:28", "url": "https://files.pythonhosted.org/packages/ca/e6/c2f7adcf886bafb0678594545d77f1be36b4fb59f47c5f21ebec4476cabf/mlprodict-0.2.363.tar.gz" } ], "0.2.452": [ { "comment_text": "", "digests": { "md5": "357c7324be829eba7e68c58b1a2df0e6", "sha256": "b9f07fff8cff5e139a565ad6e1f9917ec87fdc1e29b10566bd0373a87e3412a0" }, "downloads": -1, "filename": "mlprodict-0.2.452.tar.gz", "has_sig": false, "md5_digest": "357c7324be829eba7e68c58b1a2df0e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 134931, "upload_time": "2019-08-28T13:17:38", "url": "https://files.pythonhosted.org/packages/d8/0f/adac4339d443b3505bcc382c6bbf9b4b6509426e351236058d9ce3a94618/mlprodict-0.2.452.tar.gz" } ], "0.2.542": [ { "comment_text": "", "digests": { "md5": "3e7b954df1fc2666a677b4c6f96f4671", "sha256": "f026dc231dafa01d9ca22fdd7ea5ecd2855973c3b005497d9b855cb440237b02" }, "downloads": -1, "filename": "mlprodict-0.2.542-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "3e7b954df1fc2666a677b4c6f96f4671", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 620709, "upload_time": "2019-09-15T09:46:34", "url": "https://files.pythonhosted.org/packages/d9/59/ca5ef1e97a731fc0a2f16d3c8aff20f61da1dba6c91e2ad7b3da0a19809f/mlprodict-0.2.542-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "a011d24688816524d3728a29b0592a69", "sha256": "9dc0cdbb55a10bf9da6df5272fa96b8f0fd22a4f082645bb779e33df55cdf0ef" }, "downloads": -1, "filename": "mlprodict-0.2.542.tar.gz", "has_sig": false, "md5_digest": "a011d24688816524d3728a29b0592a69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 196833, "upload_time": "2019-09-15T09:46:06", "url": "https://files.pythonhosted.org/packages/0d/34/60ec1db6b311fed1dee845c196c4b8d893c3f7be8c6f5d3d67d8c8573f85/mlprodict-0.2.542.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e7b954df1fc2666a677b4c6f96f4671", "sha256": "f026dc231dafa01d9ca22fdd7ea5ecd2855973c3b005497d9b855cb440237b02" }, "downloads": -1, "filename": "mlprodict-0.2.542-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "3e7b954df1fc2666a677b4c6f96f4671", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 620709, "upload_time": "2019-09-15T09:46:34", "url": "https://files.pythonhosted.org/packages/d9/59/ca5ef1e97a731fc0a2f16d3c8aff20f61da1dba6c91e2ad7b3da0a19809f/mlprodict-0.2.542-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "a011d24688816524d3728a29b0592a69", "sha256": "9dc0cdbb55a10bf9da6df5272fa96b8f0fd22a4f082645bb779e33df55cdf0ef" }, "downloads": -1, "filename": "mlprodict-0.2.542.tar.gz", "has_sig": false, "md5_digest": "a011d24688816524d3728a29b0592a69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 196833, "upload_time": "2019-09-15T09:46:06", "url": "https://files.pythonhosted.org/packages/0d/34/60ec1db6b311fed1dee845c196c4b8d893c3f7be8c6f5d3d67d8c8573f85/mlprodict-0.2.542.tar.gz" } ] }