pydl8.5


Namepydl8.5 JSON
Version 0.1.8 PyPI version JSON
download
home_pagehttps://github.com/aia-uclouvain/pydl8.5
SummaryA package to build an optimal binary decision tree classifier.
upload_time2023-03-19 16:52:08
maintainerGael Aglin, Siegfried Nijssen, Pierre Schaus
docs_urlNone
authorGael Aglin, Siegfried Nijssen, Pierre Schaus
requires_python
licenseLICENSE.txt
keywords decision trees discrete optimization classification
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            ![Travis](https://app.travis-ci.com/aglingael/PyDL8.5.svg?branch=master)
![CircleCI](https://circleci.com/gh/aglingael/PyDL8.5/tree/master.svg?style=shield)
![ReadTheDocs](https://readthedocs.org/projects/pydl85/badge/?version=latest)
![Codecov](https://codecov.io/gh/aglingael/PyDL8.5/branch/master/graph/badge.svg?token=UAP32DK54M)
[![Linux - Build and Publish on PyPI](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Linux-test-and-publish.yml/badge.svg)](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Linux-test-and-publish.yml)
[![Mac - Build and Publish on PyPI](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Mac-test-and-publish.yml/badge.svg)](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Mac-test-and-publish.yml)
[![Windows - Build and Publish on PyPI](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Windows-test-and-publish.yml/badge.svg)](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Windows-test-and-publish.yml)


| Authors       | Gaƫl Aglin, Siegfried Nijssen, Pierre Schaus |
| ----------- |----------------------------------------------|


### Relevant papers
[[DL852020]](https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view) [![DOI](https://img.shields.io/badge/DOI:DL8.5-10.1609%2Faaai.v34i04.5711-blue?logo=adobe-acrobat-reader)](https://doi.org/10.1609/aaai.v34i04.5711)

[[PYDL852020]](https://www.ijcai.org/Proceedings/2020/0750.pdf) [![DOI](https://img.shields.io/badge/DOI:PYDL8.5-10.24963%2Fijcai.2020/750-blue?logo=adobe-acrobat-reader)](https://doi.org/10.24963/ijcai.2020/750)


### Description
**The PyDL8.5 library provides an implementation of DL8.5 algorithm.
Please read the relevant articles referenced below to learn about the
additional features. Please cite these papers if you use the current
library. The documentation will help you get started with PyDL8.5. It is
available [here](https://pydl85.readthedocs.io/en/latest/).**

This project implements an algorithm for inferring optimal binary
decision trees. The core code is written in C++ and this library is
a python wrapper extended by additional features. It is scikit-learn 
compatible and can be used in combination with scikit-learn. As a 
scikit-learn classifier, it implements the methods "fit" and "predict".

Because the search algorithm and the bounds used in DL8.5 are problem-agnostic,
the library can be used to learn any binary decision tree that optimizes
an arbitrary objective function. The only requirement is that the criterion
function should be additive, i.e. the value of the criterion function for
a node should be equal to the sum of the values of the criterion function
for its children. The library provides a default misclassification rate
criterion function, but it can be easily replaced by any other additive
criterion function. As the user-defined criterion function is defined in
Python, the learning process will be slower than the default one. Using this
feature, the library can be used to learn decision trees for many ML tasks
such as regression, classification, clustering, etc. It can solve many problems
such as cost-sensitive classification, multi-class classification, false
positive/negative minimization, feature selection, unfairness
mitigation, complex model explanations, etc. The different criterion functions
can be also easily added to the core C++ code for faster learning.

The core C++ code can be used as a standalone tool. It is available in the
`core` folder. There is a cmake file
to compile the code. The code is also compatible with Windows, Linux and
MacOS. After compilation, the tool can be used in the console by typing
`./dl85 -h` to get the list of available options. There is no dependency
to any other library than the standard C++ library. The only requirement
is a C++ compiler supporting C++17 for Unix systems and C++20 for Windows.
The code is compatible with GCC, Clang and MSVC. The
argument parsing code used originates from the
[argpase](https://github.com/p-ranav/argparse) GitHub project.

The current version of PyDL8.5 is enhanced using some ideas from
[MurTree](https://www.jmlr.org/papers/volume23/20-520/20-520.pdf) paper
and listed in CHANGES.txt. The version of the code used in the AAAI
paper [[DL852020]](https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view) is v0.0.15.

This tool can be installed in two ways:

-   download the source from GitHub and install using the command
    `pip install .` in the root folder.
-   install from `PYPI` using `pip` by running the command `pip install pydl8.5` in the
    console

A C++ compiler supporting C++20 is required to build the code as a
Python library if there is no wheel available for your machine.


### References
| [[DL852020]](https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view) | Aglin, G., Nijssen, S., Schaus, P. | Learning optimal decision trees using caching branch-and-bound search. In AAAI. 2020. |
|----------------| --- | --- |

| [[PYDL852020]](https://www.ijcai.org/Proceedings/2020/0750.pdf) | Aglin, G., Nijssen, S., Schaus, P. | PyDL8.5: a Library for Learning Optimal Decision Trees., In IJCAI. 2020. |
|------------------| --- | --- |

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aia-uclouvain/pydl8.5",
    "name": "pydl8.5",
    "maintainer": "Gael Aglin, Siegfried Nijssen, Pierre Schaus",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "aglingael@gmail.com, siegfried.nijssen@gmail.com, pschaus@gmail.com",
    "keywords": "decision trees,discrete optimization,classification",
    "author": "Gael Aglin, Siegfried Nijssen, Pierre Schaus",
    "author_email": "aglingael@gmail.com, siegfried.nijssen@gmail.com, pschaus@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e2/c6/ae516c9ec6d02622ce87502f6bbdfa56d7e4f2df6a4ceb5acf3ff0f507cf/pydl8.5-0.1.8.tar.gz",
    "platform": null,
    "description": "![Travis](https://app.travis-ci.com/aglingael/PyDL8.5.svg?branch=master)\n![CircleCI](https://circleci.com/gh/aglingael/PyDL8.5/tree/master.svg?style=shield)\n![ReadTheDocs](https://readthedocs.org/projects/pydl85/badge/?version=latest)\n![Codecov](https://codecov.io/gh/aglingael/PyDL8.5/branch/master/graph/badge.svg?token=UAP32DK54M)\n[![Linux - Build and Publish on PyPI](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Linux-test-and-publish.yml/badge.svg)](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Linux-test-and-publish.yml)\n[![Mac - Build and Publish on PyPI](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Mac-test-and-publish.yml/badge.svg)](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Mac-test-and-publish.yml)\n[![Windows - Build and Publish on PyPI](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Windows-test-and-publish.yml/badge.svg)](https://github.com/aia-uclouvain/pydl8.5/actions/workflows/Windows-test-and-publish.yml)\n\n\n| Authors       | Ga\u00ebl Aglin, Siegfried Nijssen, Pierre Schaus |\n| ----------- |----------------------------------------------|\n\n\n### Relevant papers\n[[DL852020]](https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view) [![DOI](https://img.shields.io/badge/DOI:DL8.5-10.1609%2Faaai.v34i04.5711-blue?logo=adobe-acrobat-reader)](https://doi.org/10.1609/aaai.v34i04.5711)\n\n[[PYDL852020]](https://www.ijcai.org/Proceedings/2020/0750.pdf) [![DOI](https://img.shields.io/badge/DOI:PYDL8.5-10.24963%2Fijcai.2020/750-blue?logo=adobe-acrobat-reader)](https://doi.org/10.24963/ijcai.2020/750)\n\n\n### Description\n**The PyDL8.5 library provides an implementation of DL8.5 algorithm.\nPlease read the relevant articles referenced below to learn about the\nadditional features. Please cite these papers if you use the current\nlibrary. The documentation will help you get started with PyDL8.5. It is\navailable [here](https://pydl85.readthedocs.io/en/latest/).**\n\nThis project implements an algorithm for inferring optimal binary\ndecision trees. The core code is written in C++ and this library is\na python wrapper extended by additional features. It is scikit-learn \ncompatible and can be used in combination with scikit-learn. As a \nscikit-learn classifier, it implements the methods \"fit\" and \"predict\".\n\nBecause the search algorithm and the bounds used in DL8.5 are problem-agnostic,\nthe library can be used to learn any binary decision tree that optimizes\nan arbitrary objective function. The only requirement is that the criterion\nfunction should be additive, i.e. the value of the criterion function for\na node should be equal to the sum of the values of the criterion function\nfor its children. The library provides a default misclassification rate\ncriterion function, but it can be easily replaced by any other additive\ncriterion function. As the user-defined criterion function is defined in\nPython, the learning process will be slower than the default one. Using this\nfeature, the library can be used to learn decision trees for many ML tasks\nsuch as regression, classification, clustering, etc. It can solve many problems\nsuch as cost-sensitive classification, multi-class classification, false\npositive/negative minimization, feature selection, unfairness\nmitigation, complex model explanations, etc. The different criterion functions\ncan be also easily added to the core C++ code for faster learning.\n\nThe core C++ code can be used as a standalone tool. It is available in the\n`core` folder. There is a cmake file\nto compile the code. The code is also compatible with Windows, Linux and\nMacOS. After compilation, the tool can be used in the console by typing\n`./dl85 -h` to get the list of available options. There is no dependency\nto any other library than the standard C++ library. The only requirement\nis a C++ compiler supporting C++17 for Unix systems and C++20 for Windows.\nThe code is compatible with GCC, Clang and MSVC. The\nargument parsing code used originates from the\n[argpase](https://github.com/p-ranav/argparse) GitHub project.\n\nThe current version of PyDL8.5 is enhanced using some ideas from\n[MurTree](https://www.jmlr.org/papers/volume23/20-520/20-520.pdf) paper\nand listed in CHANGES.txt. The version of the code used in the AAAI\npaper [[DL852020]](https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view) is v0.0.15.\n\nThis tool can be installed in two ways:\n\n-   download the source from GitHub and install using the command\n    `pip install .` in the root folder.\n-   install from `PYPI` using `pip` by running the command `pip install pydl8.5` in the\n    console\n\nA C++ compiler supporting C++20 is required to build the code as a\nPython library if there is no wheel available for your machine.\n\n\n### References\n| [[DL852020]](https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view) | Aglin, G., Nijssen, S., Schaus, P. | Learning optimal decision trees using caching branch-and-bound search. In AAAI. 2020. |\n|----------------| --- | --- |\n\n| [[PYDL852020]](https://www.ijcai.org/Proceedings/2020/0750.pdf) | Aglin, G., Nijssen, S., Schaus, P. | PyDL8.5: a Library for Learning Optimal Decision Trees., In IJCAI. 2020. |\n|------------------| --- | --- |\n",
    "bugtrack_url": null,
    "license": "LICENSE.txt",
    "summary": "A package to build an optimal binary decision tree classifier.",
    "version": "0.1.8",
    "split_keywords": [
        "decision trees",
        "discrete optimization",
        "classification"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b45ac2de32dc662c43412d8a271a37afa4fdb88cf135b41fe5bd83b143ca1918",
                "md5": "38031cd629bff23259c0be1aa7910963",
                "sha256": "fd79042340df9f25f8fef7a96aee2c051225c3402ba9badf92e70638338d2051"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8-cp38-cp38-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "38031cd629bff23259c0be1aa7910963",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 360727,
            "upload_time": "2023-03-19T16:57:37",
            "upload_time_iso_8601": "2023-03-19T16:57:37.528871Z",
            "url": "https://files.pythonhosted.org/packages/b4/5a/c2de32dc662c43412d8a271a37afa4fdb88cf135b41fe5bd83b143ca1918/pydl8.5-0.1.8-cp38-cp38-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f298bb43fe3b468cf99c31e57417ce5e38e4198dd106d81d3a2af4ab936c76d3",
                "md5": "ab12f89f82d99699fce000ccfc4cd2f6",
                "sha256": "fe7df420fa118b2dfc552fd7b01d26c874c12f8996eb7f37997ef5b7cacd9460"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ab12f89f82d99699fce000ccfc4cd2f6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 2645191,
            "upload_time": "2023-03-19T16:52:05",
            "upload_time_iso_8601": "2023-03-19T16:52:05.286800Z",
            "url": "https://files.pythonhosted.org/packages/f2/98/bb43fe3b468cf99c31e57417ce5e38e4198dd106d81d3a2af4ab936c76d3/pydl8.5-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "362067ddbc01a300f57de2767a241b78c29406f232e4aa35b208dbcefdc3ddcf",
                "md5": "696961c3d1a326cd4235a4cf69c673d6",
                "sha256": "27044e8c3eba993235de347837e0ee75a5ac5323e059f226249d01bd6be67d3f"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "696961c3d1a326cd4235a4cf69c673d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 205755,
            "upload_time": "2023-03-19T16:53:15",
            "upload_time_iso_8601": "2023-03-19T16:53:15.120921Z",
            "url": "https://files.pythonhosted.org/packages/36/20/67ddbc01a300f57de2767a241b78c29406f232e4aa35b208dbcefdc3ddcf/pydl8.5-0.1.8-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ea0a16b213e196c4f95f98763c1583c111c4c07983c9407e3d7d22ef7467bff7",
                "md5": "60c63724bd54a6c921019a9460ef95d0",
                "sha256": "0a0311b749b8997f28dda4bfaa4d286ad9d2bc7845441392b136ae3c4a39bbc1"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8-cp39-cp39-macosx_11_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "60c63724bd54a6c921019a9460ef95d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 361386,
            "upload_time": "2023-03-19T16:57:33",
            "upload_time_iso_8601": "2023-03-19T16:57:33.648271Z",
            "url": "https://files.pythonhosted.org/packages/ea/0a/16b213e196c4f95f98763c1583c111c4c07983c9407e3d7d22ef7467bff7/pydl8.5-0.1.8-cp39-cp39-macosx_11_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7c0c36b1afd6900814d0a22d4a08677fb7e96fc93b5b2bec8f774df319e3218f",
                "md5": "b91a7e303919c554aee2dd2fcb7b6367",
                "sha256": "214faac5c2053d6c9dbeb395581883a523cb22a1a83f7878fdf930961d2450e6"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b91a7e303919c554aee2dd2fcb7b6367",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 2646171,
            "upload_time": "2023-03-19T16:52:22",
            "upload_time_iso_8601": "2023-03-19T16:52:22.557850Z",
            "url": "https://files.pythonhosted.org/packages/7c/0c/36b1afd6900814d0a22d4a08677fb7e96fc93b5b2bec8f774df319e3218f/pydl8.5-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db0b31516f89edc7c8da6a208a670aaac02233ce55773497b3c4948101229fef",
                "md5": "ee4028c9e21c47efc2071c158bf5db1f",
                "sha256": "66a6c164534641ed197855e697fcb63a51cecf3b1f7e5bb5c3b225b9646ee47f"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ee4028c9e21c47efc2071c158bf5db1f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 205513,
            "upload_time": "2023-03-19T16:55:57",
            "upload_time_iso_8601": "2023-03-19T16:55:57.335036Z",
            "url": "https://files.pythonhosted.org/packages/db/0b/31516f89edc7c8da6a208a670aaac02233ce55773497b3c4948101229fef/pydl8.5-0.1.8-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e2c6ae516c9ec6d02622ce87502f6bbdfa56d7e4f2df6a4ceb5acf3ff0f507cf",
                "md5": "877fb8e733ae3664896c4818f7c3aedd",
                "sha256": "bdfe7424acdda219933316e634b09132529579e5d2a42941ed8d80cb2add1e9d"
            },
            "downloads": -1,
            "filename": "pydl8.5-0.1.8.tar.gz",
            "has_sig": false,
            "md5_digest": "877fb8e733ae3664896c4818f7c3aedd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 67271,
            "upload_time": "2023-03-19T16:52:08",
            "upload_time_iso_8601": "2023-03-19T16:52:08.009463Z",
            "url": "https://files.pythonhosted.org/packages/e2/c6/ae516c9ec6d02622ce87502f6bbdfa56d7e4f2df6a4ceb5acf3ff0f507cf/pydl8.5-0.1.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-19 16:52:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "aia-uclouvain",
    "github_project": "pydl8.5",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": true,
    "circle": true,
    "appveyor": true,
    "requirements": [],
    "lcname": "pydl8.5"
}
        
Elapsed time: 0.05098s