{ "info": { "author": "Meng Pan", "author_email": "meng.pan95@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "# pyoptree\nPython Optimal Tree\n\n### Install \n#### First install pyoptree through pip\n```\npip3 install pyoptree\n```\n\n#### Then install solver (IMPORTANT!) \nThe user needs to have **IBM Cplex** or **Gurobi** installed on their computer, and make sure that **the executable has been added to PATH environment variable** (i.e. command `cplex` or `gurobi` can be run on terminal). \n\n### Example \n```python\nimport pandas as pd\nfrom pyoptree.optree import OptimalHyperTreeModel, OptimalTreeModel\n\ndata = pd.DataFrame({\n \"index\": ['A', 'C', 'D', 'E', 'F'],\n \"x1\": [1, 2, 2, 2, 3],\n \"x2\": [1, 2, 1, 0, 1],\n \"y\": [1, 1, -1, -1, -1]\n })\ntest_data = pd.DataFrame({\n \"index\": ['A', 'B', 'C', 'D', 'E', 'F', 'G'],\n \"x1\": [1, 1, 2, 2, 2, 3, 3],\n \"x2\": [1, 2, 2, 1, 0, 1, 0],\n \"y\": [1, 1, 1, -1, -1, -1, -1]\n})\nmodel = OptimalHyperTreeModel([\"x1\", \"x2\"], \"y\", tree_depth=2, N_min=1, alpha=0.1, solver_name=\"cplex\")\nmodel.train(data)\n\nprint(model.predict(test_data))\n```\n\n### Todos \n1. Use the solution from the previous depth tree as a \"Warm Start\" to speed up the time to solve the Mixed Integer Linear Programming (MILP); \uff08Done \u221a\uff09\n2. Use the solution from sklearn's CART to give a good initial solution (Done \u221a);\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pan5431333/pyoptree", "keywords": "", "license": "BSD License", "maintainer": "Meng Pan", "maintainer_email": "meng.pan95@gmail.com", "name": "pyoptree", "package_url": "https://pypi.org/project/pyoptree/", "platform": "all", "project_url": "https://pypi.org/project/pyoptree/", "project_urls": { "Homepage": "https://github.com/pan5431333/pyoptree" }, "release_url": "https://pypi.org/project/pyoptree/1.0.3/", "requires_dist": [ "numpy (>=1.14.5)", "pandas (>=0.23.1)", "pyomo (>=5.5.0)", "scikit-learn (>=0.20.0)", "tqdm (>=4.26.0)" ], "requires_python": "", "summary": "Python Implementation of Bertsimas's paper Optimal Classification Trees.", "version": "1.0.3" }, "last_serial": 5222735, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "dbc87d125e26e4ed1ffd61c96d4fb39b", "sha256": "16d831c9c1ae46ef6ace7c953d41a3f209629055aea0623fc3c5a4aa31bcd976" }, "downloads": -1, "filename": "pyoptree-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dbc87d125e26e4ed1ffd61c96d4fb39b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4852, "upload_time": "2019-01-25T11:38:58", "url": "https://files.pythonhosted.org/packages/0f/aa/c3dd834db974b92eb453f07acf7e3f949a428d67dd9c5d9a965a7c487c2d/pyoptree-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec4543fc92fa02fc2579a6a7afc05fff", "sha256": "f460a70f6d1070a0313dc900102d623ae695df752e1ab66ce917fe42e8dd8add" }, "downloads": -1, "filename": "pyoptree-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ec4543fc92fa02fc2579a6a7afc05fff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4341, "upload_time": "2019-01-25T11:39:01", "url": "https://files.pythonhosted.org/packages/36/45/d8bc6a160a0afd479f98a47b0c1cf1d47d98193044330f9a281e79988fb2/pyoptree-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "23aa0ab3af28c45e1d64afbf4d233131", "sha256": "08939a1404a28ab43846ead6f7d0ed8d5fb92f6367dfd0ecd0edef7c8c9e0052" }, "downloads": -1, "filename": "pyoptree-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "23aa0ab3af28c45e1d64afbf4d233131", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4894, "upload_time": "2019-01-25T15:24:40", "url": "https://files.pythonhosted.org/packages/eb/0f/721292b2259fe5ce55bc31c7d8dcf3dce0c96cc796b1aa36ded369058be4/pyoptree-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "457ae0035d4f41a6cce8e9fd64c17029", "sha256": "12f05a7b2ed2d9ca612406d36d0eec4eb1761c89d4671835e75e474d1a4b9cbc" }, "downloads": -1, "filename": "pyoptree-0.1.1.tar.gz", "has_sig": false, "md5_digest": "457ae0035d4f41a6cce8e9fd64c17029", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4482, "upload_time": "2019-01-25T15:24:42", "url": "https://files.pythonhosted.org/packages/d4/bf/a84be9e14ed42d9468166e3d45b3ef25bfc828468d1cb43a773b7d105e5b/pyoptree-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "059913bcfab765187ea22c9aae995e67", "sha256": "720e3f4683044a3e28d3d135121544b51e59bda75c733b36bbbbb0cb41a95c54" }, "downloads": -1, "filename": "pyoptree-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "059913bcfab765187ea22c9aae995e67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7958, "upload_time": "2019-01-26T04:03:15", "url": "https://files.pythonhosted.org/packages/62/57/39e70c23eaef007767b8c8b1182e6c0c5529c8a4702bc50534cd725f762c/pyoptree-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f69be8f9f98d30a22dc90efb93a5f46", "sha256": "7a98eabd5233c684e3b63e86d723a7902c03b8d073b3cb5765a1194221724d58" }, "downloads": -1, "filename": "pyoptree-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8f69be8f9f98d30a22dc90efb93a5f46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4579, "upload_time": "2019-01-26T04:03:17", "url": "https://files.pythonhosted.org/packages/af/93/851907b79f44e1624c8b3733e9cf047ceda184e37523f651efcb15b38cab/pyoptree-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d03298bc68b5fe992135178e9748831b", "sha256": "780a17d2e857c88f5efdf38a8e5bb306c1d5fcf5077d0d2fe80154312d4a1768" }, "downloads": -1, "filename": "pyoptree-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d03298bc68b5fe992135178e9748831b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11148, "upload_time": "2019-01-26T11:28:54", "url": "https://files.pythonhosted.org/packages/db/fe/aa94053aadaffa7154f5046038e5c3c2f431a79acb7b11198ffe1244db65/pyoptree-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91a83729a30025da1154e6a61a3519e2", "sha256": "f7ad76a0a732ae8bef1f9c54b8e062f94d56ec4b5186233584b72abe619eb23e" }, "downloads": -1, "filename": "pyoptree-0.1.3.tar.gz", "has_sig": false, "md5_digest": "91a83729a30025da1154e6a61a3519e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8987, "upload_time": "2019-01-26T11:28:56", "url": "https://files.pythonhosted.org/packages/38/ed/d7cc072c8d47ea69afff93d2b9190e118aea274f47a4b05e4e3c91ad2239/pyoptree-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c2852c3bf20087816ae087128fbf9226", "sha256": "2e80c595fe5eeb5162cce5edaae1051b4ea00b425a003337d772f90bedc32c5b" }, "downloads": -1, "filename": "pyoptree-0.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "c2852c3bf20087816ae087128fbf9226", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9107, "upload_time": "2019-02-28T12:48:06", "url": "https://files.pythonhosted.org/packages/4f/a3/f4c53dd16aa5dabdb963dcc2c1452ed321bbc80fabd8a2c57fbdd30edcb8/pyoptree-0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1f6fa7e26b83e65eae9247a37f739bf", "sha256": "e4364c0bbef831a132d67719c32a8d0a083e35f53d02b2bc736f8e60024c9aca" }, "downloads": -1, "filename": "pyoptree-0.1.4.tar.gz", "has_sig": false, "md5_digest": "b1f6fa7e26b83e65eae9247a37f739bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9273, "upload_time": "2019-02-28T12:48:09", "url": "https://files.pythonhosted.org/packages/25/3c/f79e2a9f9ffccc4bfdae79149240b86eed83e5703efa29057e39e6c41b6c/pyoptree-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "1c1ef558e8e88c37fd46202127e81158", "sha256": "88268ee8be279c0843c120acbbb0af2f9a9db83e57f1c0d5fd249603cf565591" }, "downloads": -1, "filename": "pyoptree-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1c1ef558e8e88c37fd46202127e81158", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9702, "upload_time": "2019-03-03T10:40:28", "url": "https://files.pythonhosted.org/packages/9f/9f/f742665c303f7887876f5d695dae2eb13ea791f8f1ad203ada02b09b6366/pyoptree-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c93640d44f7a97c39215d522ac799781", "sha256": "f1c5982775498e2f118f40f3aad9ad02ed275ae54b1c560d0de25a85a5f642ea" }, "downloads": -1, "filename": "pyoptree-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c93640d44f7a97c39215d522ac799781", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9992, "upload_time": "2019-03-03T10:40:30", "url": "https://files.pythonhosted.org/packages/cf/08/22021877af4ee7048e5ca4dbd2b36a4034caee216bc65d82a598cb86e98e/pyoptree-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "134497a18a20f7f91621afde894761c2", "sha256": "432edf5678e459c8b181b99bfda88eb5917e5e58f6bb0e4f27796dbc6510348a" }, "downloads": -1, "filename": "pyoptree-0.1.6-py2-none-any.whl", "has_sig": false, "md5_digest": "134497a18a20f7f91621afde894761c2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9728, "upload_time": "2019-03-12T09:16:58", "url": "https://files.pythonhosted.org/packages/69/62/fbb9f38266f72aab8a13753bece8e96ff283c1276bef38d5da78e14893f6/pyoptree-0.1.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d455e4e2060cc88a589a3c08f7876258", "sha256": "97a7542109c0a063b3b2b9ce53671c494629e6aa85499d43b0542ce2a1ba4a57" }, "downloads": -1, "filename": "pyoptree-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d455e4e2060cc88a589a3c08f7876258", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10033, "upload_time": "2019-03-12T09:17:00", "url": "https://files.pythonhosted.org/packages/13/49/17566fd70701c5568d78543cea005540cf9a7037d4c13f1f9f4e686c3100/pyoptree-0.1.6.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b57f2de589131ca04b8a6c1133babc73", "sha256": "45b83c2bcb0aae305babaf46288db53b581b05a8547cb0527273d29e6f1f8bde" }, "downloads": -1, "filename": "pyoptree-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b57f2de589131ca04b8a6c1133babc73", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15977, "upload_time": "2019-05-03T09:51:32", "url": "https://files.pythonhosted.org/packages/56/de/33b31c1c74957528a7faa2738d391cbdc8f31d794b03421720144c645ec1/pyoptree-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf75cf07141c4d3646216927369854f0", "sha256": "89d2d2384a57be518859ffee2c433b3cbfae0ff1d6a25e5ebce73eabe0888f2e" }, "downloads": -1, "filename": "pyoptree-1.0.0.tar.gz", "has_sig": false, "md5_digest": "cf75cf07141c4d3646216927369854f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13849, "upload_time": "2019-05-03T09:51:34", "url": "https://files.pythonhosted.org/packages/ac/2f/4837aa1413903c3530afe1b7bcd5a2ee77bea12fcc37a6ac79ea7f19552a/pyoptree-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "59954f0cffb57ca90f415a00e63e3a6c", "sha256": "030833bd7d145827c481297fd3f4d652f945b3f00a8d267a9ab92fa2b31a4817" }, "downloads": -1, "filename": "pyoptree-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "59954f0cffb57ca90f415a00e63e3a6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16898, "upload_time": "2019-05-03T10:21:24", "url": "https://files.pythonhosted.org/packages/57/23/b485cca5d6cd58abaa8fd1d108880a6f15e015ec77a10e1a03c7d0640488/pyoptree-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29509a4167e3c2755610bc2ba1df616d", "sha256": "282a85c7e2d96f050882b0add75d5b9bb87b4f551832dc8f1100f07df377a168" }, "downloads": -1, "filename": "pyoptree-1.0.1.tar.gz", "has_sig": false, "md5_digest": "29509a4167e3c2755610bc2ba1df616d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14469, "upload_time": "2019-05-03T10:21:26", "url": "https://files.pythonhosted.org/packages/8c/43/33158ed04d25c08d9c07435e51aedd93a6dfd47ebfb73ec7f35810158e59/pyoptree-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "5dddff2a10ea624ca588b7f1806b7ecb", "sha256": "61abf7837d580c09fc3df9e2ea8eac591c79187fadf6990f12f2510cab512fca" }, "downloads": -1, "filename": "pyoptree-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5dddff2a10ea624ca588b7f1806b7ecb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16902, "upload_time": "2019-05-03T11:07:31", "url": "https://files.pythonhosted.org/packages/27/5d/6e336110773f61b5210f4780380d297562a83ac4202c8f464010575aa39f/pyoptree-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ceed7b67b16810f305d68a30d15b04c", "sha256": "77208d8bcbf290689b5a8e6b70f1f69d03efdddea885f0f504472dcde78894d6" }, "downloads": -1, "filename": "pyoptree-1.0.2.tar.gz", "has_sig": false, "md5_digest": "2ceed7b67b16810f305d68a30d15b04c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14480, "upload_time": "2019-05-03T11:07:33", "url": "https://files.pythonhosted.org/packages/0b/41/13d6b9a7b4342e78c299aa9d85ebc0c1d1137da2fa835ce2165f70a7e8ba/pyoptree-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "56d0e9e027a5ac1a7da534e5d330410f", "sha256": "e98b9d564da7c0dae9bc2065c2f1861d1dd84a5de142267ccf93a1f5431cc3a7" }, "downloads": -1, "filename": "pyoptree-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "56d0e9e027a5ac1a7da534e5d330410f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16851, "upload_time": "2019-05-03T16:35:37", "url": "https://files.pythonhosted.org/packages/17/ca/d2513a5ff2139fcec22b0a8e7d18a58083759769416096428b161cd9f213/pyoptree-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19bc841cb0f9ab7caf5438ad383178f1", "sha256": "cda9fab77ff204916451f941d674bed1646107ed160ad6c890a5e0f71059b8a3" }, "downloads": -1, "filename": "pyoptree-1.0.3.tar.gz", "has_sig": false, "md5_digest": "19bc841cb0f9ab7caf5438ad383178f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14430, "upload_time": "2019-05-03T16:35:39", "url": "https://files.pythonhosted.org/packages/88/12/edd585dc1a0baa0729a62964d0b5dea6ec97b98a454475cf83dba8a9ca47/pyoptree-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "56d0e9e027a5ac1a7da534e5d330410f", "sha256": "e98b9d564da7c0dae9bc2065c2f1861d1dd84a5de142267ccf93a1f5431cc3a7" }, "downloads": -1, "filename": "pyoptree-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "56d0e9e027a5ac1a7da534e5d330410f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16851, "upload_time": "2019-05-03T16:35:37", "url": "https://files.pythonhosted.org/packages/17/ca/d2513a5ff2139fcec22b0a8e7d18a58083759769416096428b161cd9f213/pyoptree-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19bc841cb0f9ab7caf5438ad383178f1", "sha256": "cda9fab77ff204916451f941d674bed1646107ed160ad6c890a5e0f71059b8a3" }, "downloads": -1, "filename": "pyoptree-1.0.3.tar.gz", "has_sig": false, "md5_digest": "19bc841cb0f9ab7caf5438ad383178f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14430, "upload_time": "2019-05-03T16:35:39", "url": "https://files.pythonhosted.org/packages/88/12/edd585dc1a0baa0729a62964d0b5dea6ec97b98a454475cf83dba8a9ca47/pyoptree-1.0.3.tar.gz" } ] }