{ "info": { "author": "Maciej Gryka", "author_email": "maciej@rainforestqa.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Scientific/Engineering :: Artificial Intelligence" ], "description": "==========\ndestimator\n==========\n\ndestimator makes it easy to store trained ``scikit-learn`` estimators together with their metadata (training data, package versions, performance numbers etc.). This makes it much safer to store already-trained classifiers/regressors and allows for better reproducibility (see `this talk `_ by `Alex Gaynor `_ for some rationale).\n\nSpecifically, the ``DescribedEstimator`` class proxies most calls to the original ``Estimator`` it is wrapping, but also contains the following information:\n\n* training and test (validation) data (``features_train``, ``labels_train``, ``features_test``, ``labels_test``)\n* creation date (``created_at``)\n* feature names (``feature_names``)\n* performance numbers on the test set (``precision``, ``recall``, ``fscore``, ``support`` via `sklearn `_)\n* distribution info (``distribution_info``; python distribution and versions of all installed packages)\n* VCS hash (``vcs_hash``, if used inside a git repository, otherwise and empty string).\n\nAn instantiated ``DescribedEstimator`` can be easily serialized using the ``.save()`` method and deserialized using either ``.from_file()`` or ``.from_url()``. Did you ever want to store your models in S3? Now it's easy!\n\n``DescribedEstimator`` can be used as follows:\n\n.. code-block:: python\n\n import numpy as np\n from sklearn.datasets import load_iris\n from sklearn.ensemble import RandomForestClassifier\n from sklearn.cross_validation import train_test_split\n from sklearn.metrics import precision_recall_fscore_support\n\n from destimator import DescribedEstimator\n\n\n # get some data\n iris = load_iris()\n features = iris.data\n labels = iris.target\n features_train, features_test, labels_train, labels_test = train_test_split(features, labels, test_size=0.1)\n\n # train an estimator as usual (in this case a RandomForestClassifier)\n clf = RandomForestClassifier(n_estimators=10, max_depth=None, min_samples_split=10, random_state=0)\n clf.fit(features_train, labels_train)\n\n # wrap the estimator in the DescribedEstimator class giving it all the training and test (validation) data\n dclf = DescribedEstimator(\n clf,\n features_train,\n labels_train,\n features_test,\n labels_test,\n iris.feature_names\n )\n\nNow you can use the classifier as usual:\n\n.. code-block:: python\n\n print(dclf.predict(features_test))\n > [2 1 2 2 0 1 0 2 2 1 2 0 2 1 2]\n\nand you can also access a bunch of other properties, such as the training data you supplied:\n\n.. code-block:: python\n\n print(dclf.feature_names)\n > ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n\n print(dclf.features_test)\n > [[ 6.3 2.8 5.1 1.5]\n [ 5.6 3. 4.5 1.5]\n [ 6.7 3.1 5.6 2.4]\n [ 6. 2.7 5.1 1.6]\n [ 4.9 3.1 1.5 0.1]\n [ 6.2 2.2 4.5 1.5]\n [ 4.7 3.2 1.6 0.2]\n [ 6.9 3.1 5.1 2.3]\n [ 7.7 2.6 6.9 2.3]\n [ 5.8 2.6 4. 1.2]\n [ 7.2 3. 5.8 1.6]\n [ 5.4 3.7 1.5 0.2]\n [ 7.2 3.2 6. 1.8]\n [ 6.3 3.3 4.7 1.6]\n [ 6.8 3.2 5.9 2.3]]\n\n print(dclf.labels_test)\n > [2 1 2 1 0 1 0 2 2 1 2 0 2 1 2]\n\nthe performance numbers:\n\n.. code-block:: python\n\n print('precision: %s' % (dclf.precision))\n > precision: [1.0, 1.0, 0.875]\n\n print('recall: %s' % (dclf.recall))\n > recall: [1.0, 0.8, 1.0]\n\n print('fscore: %s' % (dclf.fscore))\n > fscore: [1.0, 0.888888888888889, 0.9333333333333333]\n\n print('support: %s' % (dclf.support))\n > support: [3, 5, 7]\n\n print('roc_auc: %s' % (dclf.roc_auc))\n > roc_auc: 0.5\n\nor information about the Python distribution used for training:\n\n.. code-block:: python\n\n from pprint import pprint\n pprint(dclf.distribution_info)\n\n > {'packages': ['appnope==0.1.0',\n 'decorator==4.0.4',\n 'destimator==0.0.0.dev3',\n 'gnureadline==6.3.3',\n 'ipykernel==4.2.1',\n 'ipython-genutils==0.1.0',\n 'ipython==4.0.1',\n 'ipywidgets==4.1.1',\n 'jinja2==2.8',\n 'jsonschema==2.5.1',\n 'jupyter-client==4.1.1',\n 'jupyter-console==4.0.3',\n 'jupyter-core==4.0.6',\n 'jupyter==1.0.0',\n 'markupsafe==0.23',\n 'mistune==0.7.1',\n 'nbconvert==4.1.0',\n 'nbformat==4.0.1',\n 'notebook==4.0.6',\n 'numpy==1.10.1',\n 'path.py==8.1.2',\n 'pexpect==4.0.1',\n 'pickleshare==0.5',\n 'pip==7.1.2',\n 'ptyprocess==0.5',\n 'pygments==2.0.2',\n 'pyzmq==15.1.0',\n 'qtconsole==4.1.1',\n 'requests==2.8.1',\n 'scikit-learn==0.17',\n 'scipy==0.16.1',\n 'setuptools==18.2',\n 'simplegeneric==0.8.1',\n 'terminado==0.5',\n 'tornado==4.3',\n 'traitlets==4.0.0',\n 'wheel==0.24.0'],\n 'python': '3.5.0 (default, Sep 14 2015, 02:37:27) \\n'\n '[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]'}\n\nFinally, the object can be serialized to a `zip` file containing all the above data:\n\n.. code-block:: python\n\n dclf.save('./classifiers', 'dclf')\n\nand deserialized either from a file,\n\n.. code-block:: python\n\n dclf = DescribedEstimator.from_file('./classifiers/dclf.zip')\n\nor from a URL:\n\n.. code-block:: python\n\n dclf = DescribedEstimator.from_url('http://localhost/dclf.zip')", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rainforestapp/destimator", "keywords": "scikit-learn,machine-learning,data,science", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "destimator", "package_url": "https://pypi.org/project/destimator/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/destimator/", "project_urls": { "Homepage": "https://github.com/rainforestapp/destimator" }, "release_url": "https://pypi.org/project/destimator/0.1.4/", "requires_dist": [ "numpy (>=1.10.1)", "requests (>=2.8.1)", "scikit-learn (>=0.17)", "scipy (>=0.16.0)", "check-manifest; extra == 'dev'", "sphinx; extra == 'dev'", "sphinx-rtd-theme; extra == 'dev'", "twine; extra == 'dev'", "flake8; extra == 'test'", "pytest; extra == 'test'", "pytest-cov; extra == 'test'", "tox; extra == 'test'" ], "requires_python": "", "summary": "A metadata-saving proxy for scikit-learn etimators.", "version": "0.1.4" }, "last_serial": 2521548, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f413705ae0466dfcfe6214890ffa6319", "sha256": "60d20a035046733a5b4263eaed2da64325f7ed1f41a88a84fca53812d7b77697" }, "downloads": -1, "filename": "destimator-0.0.1-py3.5.egg", "has_sig": false, "md5_digest": "f413705ae0466dfcfe6214890ffa6319", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13826, "upload_time": "2015-12-04T19:51:18", "url": "https://files.pythonhosted.org/packages/91/10/12a1d5f9b375426565fc4ba3fa6b076e222fbb5c2383928a219ef16528cb/destimator-0.0.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "19132b4e82968f383578d12e93253182", "sha256": "a73d17fd7c6f44358b4b74d1b7274436a2344c6d4929f18d65fa0cf2a540a2c8" }, "downloads": -1, "filename": "destimator-0.0.1.tar.gz", "has_sig": false, "md5_digest": "19132b4e82968f383578d12e93253182", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7345, "upload_time": "2015-12-04T19:06:27", "url": "https://files.pythonhosted.org/packages/06/79/757aca7a32d214f113c02a7a47d384c4204bd7b986b4c945ac482cfc2a26/destimator-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8b0e8abe82deb20d7ac8c879ff028745", "sha256": "37520b8bd30c5887a57f058507876fbb1badf0d2d345292ff84f47a133553223" }, "downloads": -1, "filename": "destimator-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8b0e8abe82deb20d7ac8c879ff028745", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5644, "upload_time": "2015-12-04T19:51:26", "url": "https://files.pythonhosted.org/packages/36/96/d3a11e1bab222277e73294843270e5b73d5142106148457f34bee2b74462/destimator-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "c45f88bbe43c62d898b18994cab5b202", "sha256": "ca5ae44ec571eca22d69fe3bc873526e5fbdaf7e183f932adf3711a8fec2718b" }, "downloads": -1, "filename": "destimator-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c45f88bbe43c62d898b18994cab5b202", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11260, "upload_time": "2015-12-05T10:12:00", "url": "https://files.pythonhosted.org/packages/b0/3f/d93c7afda7d71dac98415c25f6c327326cf68690297948e26fae0f8113b4/destimator-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdadce6bf739c295edd7050c6e18f8fe", "sha256": "b416d3a2589c916c27cad8e4ac9adeb8b45ed04c5b26abb2c2483ebb881c680a" }, "downloads": -1, "filename": "destimator-0.0.4.tar.gz", "has_sig": false, "md5_digest": "cdadce6bf739c295edd7050c6e18f8fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9055, "upload_time": "2015-12-05T10:12:15", "url": "https://files.pythonhosted.org/packages/7e/96/2c4784d2e82272e9fbcd189334fc96e548ea3df538f9320f41eca320c719/destimator-0.0.4.tar.gz" } ], "0.0.4.dev0": [ { "comment_text": "", "digests": { "md5": "d4259db37149bd662dcedadc1988739c", "sha256": "d8bc33b462c196d7bf37a1e71005bddba67931a7e62cc7af6ad34cb79aa52cfe" }, "downloads": -1, "filename": "destimator-0.0.4.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4259db37149bd662dcedadc1988739c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11335, "upload_time": "2015-12-05T10:09:43", "url": "https://files.pythonhosted.org/packages/a7/7a/72bfc63052da783373c13dcad63b0cb9d6498e0ae443f033f00cc42cb81e/destimator-0.0.4.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01889a2fb247acd728ed9e7bc13b1c14", "sha256": "c0f9738a72dd685a9059d298e0de62153f409a29ab872174ca0c96093efc9930" }, "downloads": -1, "filename": "destimator-0.0.4.dev0.tar.gz", "has_sig": false, "md5_digest": "01889a2fb247acd728ed9e7bc13b1c14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9071, "upload_time": "2015-12-05T10:09:51", "url": "https://files.pythonhosted.org/packages/3b/7a/8d06bbac833f7e26580f15abc5992e51de3dc18b64515f583f14a716a8b3/destimator-0.0.4.dev0.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "37f310ad875cbcdca0a8b8a8203b42c4", "sha256": "7ffa2dffdaa40b4c23a49fc92da784112cd6f9de2792a3c084250337a1aaa9b7" }, "downloads": -1, "filename": "destimator-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "37f310ad875cbcdca0a8b8a8203b42c4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11363, "upload_time": "2015-12-15T21:56:46", "url": "https://files.pythonhosted.org/packages/e0/07/60faef827d09e6cc7b87972fe7618f5d92a42f0c828069fc656fffaed9f0/destimator-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "659c640f62462bd0afa8d8bdf0e1273f", "sha256": "14c99c5f9c90396abe45362adf3ad27ed0d5debb5df7c2ec985d25077fc6dd1c" }, "downloads": -1, "filename": "destimator-0.0.5.tar.gz", "has_sig": false, "md5_digest": "659c640f62462bd0afa8d8bdf0e1273f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9127, "upload_time": "2015-12-15T21:56:51", "url": "https://files.pythonhosted.org/packages/27/e3/7009cfcc8946065490358136296955b356e938f0d5c881d4d4fc6dd0716a/destimator-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "c5bbb4a6e2624bf16e381f8956dfd4f9", "sha256": "c7042cd7ede3c5e17033e7172c3cdcb465f8d9ad9dfd1a99bef92f8654560120" }, "downloads": -1, "filename": "destimator-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c5bbb4a6e2624bf16e381f8956dfd4f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11646, "upload_time": "2015-12-22T17:14:50", "url": "https://files.pythonhosted.org/packages/8c/b0/72f97f4d85fdeb3ba6ad87b55503a2bcd629f260377d1f7fcc13cf1020ed/destimator-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f330dcd150ec2a723e671e284d8e2f92", "sha256": "61190389b091507a2ac424b3af4b00fd2bb34749eddc476f58408c4e3465843c" }, "downloads": -1, "filename": "destimator-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f330dcd150ec2a723e671e284d8e2f92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9326, "upload_time": "2015-12-22T17:14:56", "url": "https://files.pythonhosted.org/packages/8b/eb/aad12929e2442aa2282662571dedecbb8e774789491daf4417df65e63aa2/destimator-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8f408adea45097f07524e929dd5a3d65", "sha256": "eb048f417dbc7f60110cc71a52ca0163690628f2ed3693480c19e27c127e3a4c" }, "downloads": -1, "filename": "destimator-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8f408adea45097f07524e929dd5a3d65", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11695, "upload_time": "2015-12-22T17:29:32", "url": "https://files.pythonhosted.org/packages/7e/fe/c7b8a57470f695925120dcb71c428992eacc4c9a6984a99378f21ea138af/destimator-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d265ed4e1442d14a9d386289785da068", "sha256": "a4d05374e6bec164175a338c97ba2c3e2f386189341783f19a9660e382f9328e" }, "downloads": -1, "filename": "destimator-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d265ed4e1442d14a9d386289785da068", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9364, "upload_time": "2015-12-22T17:29:42", "url": "https://files.pythonhosted.org/packages/76/57/263be8e70de86cc1baf8a2c2c2ecc9b2003bea3268cedb52f20645170ed3/destimator-0.1.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "ced755bfa275969fbdb0c64542957232", "sha256": "52beb3a7458158fc0e5cb87f47b92224bc4d32269909573a58bc66ec13961654" }, "downloads": -1, "filename": "destimator-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ced755bfa275969fbdb0c64542957232", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11988, "upload_time": "2016-05-10T11:48:48", "url": "https://files.pythonhosted.org/packages/a1/05/bde16c831e31e5a9b9e3a6f0127fb8dc11ccb8cbdd67c899104d2e0f3f05/destimator-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a272449733bf58cd97924a16cd19db61", "sha256": "8bcf405410abdd95717aa742f8c206444c321c4e370eecec1bcd269828641138" }, "downloads": -1, "filename": "destimator-0.1.3.tar.gz", "has_sig": false, "md5_digest": "a272449733bf58cd97924a16cd19db61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9618, "upload_time": "2016-05-10T11:49:07", "url": "https://files.pythonhosted.org/packages/06/e3/88a8cf641d9e472920b20929710a2a18ff9e65f665a723f7a6f84c715f5d/destimator-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "da6e0f07259fbc72882d5cb55c6d9a58", "sha256": "0f0cf7f9e29f528985ec229dd66a3ab1fd061b12b60d022eae9c4afccb12f7d2" }, "downloads": -1, "filename": "destimator-0.1.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "da6e0f07259fbc72882d5cb55c6d9a58", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12306, "upload_time": "2016-12-15T16:18:09", "url": "https://files.pythonhosted.org/packages/f2/73/bcda7d41a4148270528e95da820126ce7eca160a4ed930b28bf47a20af96/destimator-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fe366d05461f9f279119351219468e3", "sha256": "501f495c92563c496eb98740acbc20fe5aadfdc82451dfa47064f3b0a8826ca6" }, "downloads": -1, "filename": "destimator-0.1.4.tar.gz", "has_sig": true, "md5_digest": "9fe366d05461f9f279119351219468e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9991, "upload_time": "2016-12-15T16:18:12", "url": "https://files.pythonhosted.org/packages/3f/3f/e000d7b54eeb61d3acb299cf6ed6b7fa3ab71f96a4e0880842f9832eaf24/destimator-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "da6e0f07259fbc72882d5cb55c6d9a58", "sha256": "0f0cf7f9e29f528985ec229dd66a3ab1fd061b12b60d022eae9c4afccb12f7d2" }, "downloads": -1, "filename": "destimator-0.1.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "da6e0f07259fbc72882d5cb55c6d9a58", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12306, "upload_time": "2016-12-15T16:18:09", "url": "https://files.pythonhosted.org/packages/f2/73/bcda7d41a4148270528e95da820126ce7eca160a4ed930b28bf47a20af96/destimator-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fe366d05461f9f279119351219468e3", "sha256": "501f495c92563c496eb98740acbc20fe5aadfdc82451dfa47064f3b0a8826ca6" }, "downloads": -1, "filename": "destimator-0.1.4.tar.gz", "has_sig": true, "md5_digest": "9fe366d05461f9f279119351219468e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9991, "upload_time": "2016-12-15T16:18:12", "url": "https://files.pythonhosted.org/packages/3f/3f/e000d7b54eeb61d3acb299cf6ed6b7fa3ab71f96a4e0880842f9832eaf24/destimator-0.1.4.tar.gz" } ] }