{ "info": { "author": "Ignat Drozdov", "author_email": "idrozdov@beringresearch.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6" ], "description": "[![Documentation Status](https://readthedocs.org/projects/bering-ml-lab/badge/?version=latest)](https://bering-ml-lab.readthedocs.io/en/latest/?badge=latest)\n\n# Machine Learning Lab\n\nA lightweight command line interface for the management of arbitrary machine learning tasks.\n\nDocumentation is available at: \n\nNOTE: Lab is in active development - expect a bumpy ride!\n\n![alt text](https://github.com/beringresearch/lab/blob/master/docs/source/_static/lab_screenshot.jpeg \"Bering's Lab\")\n\n## Installation\n\nThe latest stable version can be installed directly from PyPi:\n\n```bash\npip install lab-ml\n```\n\nDevelopment version can be installed from github.\n\n```bash\ngit clone https://github.com/beringresearch/lab\ncd lab\npip install --editable .\n```\n\n## Concepts\n\nLab employs three concepts: __reproducible environment__, __logging__, and __model persistence__.\nA typical machine learning workflow can be turned into a Lab Experiment by adding a single decorator.\n\n## Creating a new Lab Project\n\n```bash\nlab init --name [NAME]\n```\n\nLab will look for a **requirements.txt** file in the working directory to generate a portable virtual environment for ML experiments.\n\n## Setting up a Lab Experiment\n\nHere's a simple script that trains an SVM classifier on the iris data set:\n\n```python\nfrom sklearn import svm, datasets\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import accuracy_score, precision_score\n\nC = 1.0\ngamma = 0.7\niris = datasets.load_iris()\nX = iris.data\ny = iris.target\n\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.24, random_state=42)\n\nclf = svm.SVC(C, 'rbf', gamma=gamma, probability=True)\nclf.fit(X_train, y_train)\n\ny_pred = clf.predict(X_test)\naccuracy = accuracy_score(y_test, y_pred)\nprecision = precision_score(y_test, y_pred, average = 'macro')\n```\n\nIt's trivial to create a Lab Experiment using a simple decorator:\n\n```python\nfrom sklearn import svm, datasets\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import accuracy_score, precision_score\n\nfrom lab.experiment import Experiment ## New Line\n\ne = Experiment() ## New Line\n\n@e.start_run ## New Line\ndef train():\n C = 1.0\n gamma = 0.7\n iris = datasets.load_iris()\n X = iris.data\n y = iris.target\n\n X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.24, random_state=42)\n\n clf = svm.SVC(C, 'rbf', gamma=gamma, probability=True)\n clf.fit(X_train, y_train)\n\n y_pred = clf.predict(X_test)\n accuracy = accuracy_score(y_test, y_pred)\n precision = precision_score(y_test, y_pred, average = 'macro')\n\n e.log_metric('accuracy_score', accuracy) ## New Line\n e.log_metric('precision_score', precision) ## New Line\n\n e.log_parameter('C', C) ## New Line\n e.log_parameter('gamma', gamma) ## New Line\n\n e.log_model('svm', clf) ## New Line\n```\n\n## Running an Experiment\n\nLab Experiments can be run as:\n\n```bash\nlab run \n```\n\n## Comparing models\n\nLab assumes that all Experiments associated with a Project log consistent performance metrics. We can quickly assess performance of each experiment by running:\n\n```bash\nlab ls\n\nExperiment Source Date accuracy_score precision_score\n------------ ------------------ ---------- ---------------- -----------------\n49ffb76e train_mnist_mlp.py 2019-01-15 0.97: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 0.97: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n261a34e4 train_mnist_cnn.py 2019-01-15 0.98: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 0.98: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n```\n\n## Pushing models to a centralised repository\n\nLab experiments can be pushed to a centralised filesystem through integration with [minio](https://minio.io). Lab assumes that you have setup minio on a private cloud.\n\nLab can be configured once to interface with a remote minio instance:\n\n```bash\nlab config minio --tag my-minio --endpoint [URL:PORT] --accesskey [STRING] --secretkey [STRING]\n```\n\nTo push a local lab experiment to minio:\n\n```bash\nlab push --tag my-minio --bucket [BUCKETNAME] .\n```\n\nCopyright 2019, Bering Limited\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/beringresearch/lab", "keywords": "ml ai", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "lab-ml", "package_url": "https://pypi.org/project/lab-ml/", "platform": "", "project_url": "https://pypi.org/project/lab-ml/", "project_urls": { "Homepage": "https://github.com/beringresearch/lab" }, "release_url": "https://pypi.org/project/lab-ml/0.81.87.dev0/", "requires_dist": [ "click (>=6.7)", "minio", "numpy", "pandas", "pyyaml", "tabulate", "graphviz", "joblib" ], "requires_python": "", "summary": "Lab: a command line interface for the management of arbitrary machine learning tasks.", "version": "0.81.87.dev0" }, "last_serial": 5516627, "releases": { "0.81.84.dev0": [ { "comment_text": "", "digests": { "md5": "0ee7c89f004374551683da610e0f5b40", "sha256": "c525730b255d37e4a299b1c8564f01682d80df82af2339a9ab7a75e1e5ac4bf8" }, "downloads": -1, "filename": "lab_ml-0.81.84.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "0ee7c89f004374551683da610e0f5b40", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18741, "upload_time": "2019-07-08T19:37:37", "url": "https://files.pythonhosted.org/packages/4d/fe/a1966014a00e165b56ab823ccd4bd6082d7f6fd9f681bb43c3e68bdf2691/lab_ml-0.81.84.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b38df654f804aad0fc15669f7e763e5", "sha256": "1e25e682ff7eebdba0401976a9fd6a3640a6b19229e3fc8f6651ebaa266c2d36" }, "downloads": -1, "filename": "lab-ml-0.81.84.dev0.tar.gz", "has_sig": false, "md5_digest": "5b38df654f804aad0fc15669f7e763e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5094, "upload_time": "2019-07-08T19:27:42", "url": "https://files.pythonhosted.org/packages/1f/89/4c78dc1ff1260529e02a87aedf1ec1071f10655d2256e8550fa468585762/lab-ml-0.81.84.dev0.tar.gz" } ], "0.81.85.dev0": [ { "comment_text": "", "digests": { "md5": "f405a462c8ea76723a33874d0d800c27", "sha256": "ccd0822411751b68c1cabd8fe959b0c862a88dde016d5e726b411b28c9fc2b64" }, "downloads": -1, "filename": "lab_ml-0.81.85.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "f405a462c8ea76723a33874d0d800c27", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18742, "upload_time": "2019-07-08T19:38:08", "url": "https://files.pythonhosted.org/packages/95/23/02f1ccb6880aaf2020280c803d7641d473472bff87727aef5a6e2c03c652/lab_ml-0.81.85.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4caa5b2e1420227e6c4a7b7b4c853fb", "sha256": "9a06a22aaa7facf908f2b42e76eec02e6c62d1fed4470555d5f5483663f94c0a" }, "downloads": -1, "filename": "lab-ml-0.81.85.dev0.tar.gz", "has_sig": false, "md5_digest": "d4caa5b2e1420227e6c4a7b7b4c853fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13535, "upload_time": "2019-07-08T19:38:10", "url": "https://files.pythonhosted.org/packages/a5/b8/c58587219bcd8fc4eb924f0a26c250c18993d67534b14ec83c4fba646cc4/lab-ml-0.81.85.dev0.tar.gz" } ], "0.81.87.dev0": [ { "comment_text": "", "digests": { "md5": "6dffb32db2f14bb39af24167a91f25bf", "sha256": "15b4868b1cb962383945cfa2e2dd93c2b9b22028a8c6f33b99b771cdd3c8d10e" }, "downloads": -1, "filename": "lab_ml-0.81.87.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "6dffb32db2f14bb39af24167a91f25bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18693, "upload_time": "2019-07-11T09:38:32", "url": "https://files.pythonhosted.org/packages/83/1e/849c6e0d01041c52b66b12834a5e22721ac20c6d189f308d00dda1d8a408/lab_ml-0.81.87.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a5caea6c82f357fd875083bcdcc8ea6", "sha256": "43181c23ddcf8efb438bb3cd45ed74b98265897c893192fd5893011242bbe40c" }, "downloads": -1, "filename": "lab-ml-0.81.87.dev0.tar.gz", "has_sig": false, "md5_digest": "5a5caea6c82f357fd875083bcdcc8ea6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13487, "upload_time": "2019-07-11T09:38:34", "url": "https://files.pythonhosted.org/packages/17/d2/6b7c9976ea0ec581775e60ff86d5dd0e5b89b368690bfe436dd01b921b07/lab-ml-0.81.87.dev0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6dffb32db2f14bb39af24167a91f25bf", "sha256": "15b4868b1cb962383945cfa2e2dd93c2b9b22028a8c6f33b99b771cdd3c8d10e" }, "downloads": -1, "filename": "lab_ml-0.81.87.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "6dffb32db2f14bb39af24167a91f25bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18693, "upload_time": "2019-07-11T09:38:32", "url": "https://files.pythonhosted.org/packages/83/1e/849c6e0d01041c52b66b12834a5e22721ac20c6d189f308d00dda1d8a408/lab_ml-0.81.87.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a5caea6c82f357fd875083bcdcc8ea6", "sha256": "43181c23ddcf8efb438bb3cd45ed74b98265897c893192fd5893011242bbe40c" }, "downloads": -1, "filename": "lab-ml-0.81.87.dev0.tar.gz", "has_sig": false, "md5_digest": "5a5caea6c82f357fd875083bcdcc8ea6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13487, "upload_time": "2019-07-11T09:38:34", "url": "https://files.pythonhosted.org/packages/17/d2/6b7c9976ea0ec581775e60ff86d5dd0e5b89b368690bfe436dd01b921b07/lab-ml-0.81.87.dev0.tar.gz" } ] }