Skip to main content

Oblique Decision Tree in Python

Project description

scikit-obliquetree

Build status Python Version Dependencies Status

Code style: black Security: bandit Pre-commit Semantic Versions License

Oblique Decision Tree in Python

Introduction

The oblique decision tree is a popular choice in the machine learning domain for improving the performance of traditional decision tree algorithms. In contrast to the traditional decision tree, which uses an axis-parallel split point to determine whether a data point should be assigned to the left or right branch of a decision tree, the oblique decision tree uses a hyper-plane based on all data point features.

Numerous works in the machine learning domain have shown that oblique decision trees can achieve exceptional performance in a wide range of domains. However, there is still a lack of a package that has implemented oblique decision tree algorithms, which stymies the development of this domain. As a result, the goal of this project is to solve this problem by implementing some well-known algorithms in this domain. We hope that by doing so, these algorithms will serve as a baseline for machine learning practitioners to compare newly designed algorithms to existing algorithms.

🚀 Features

  • A simple scikit-learn interface for oblique decision tree algorithms
  • A general gradient boosting estimator that can be used to improve arbitrary base estimators

Installation

pip install -U scikit-obliquetree

or install with Poetry

poetry add scikit-obliquetree

Then you can run

scikit-obliquetree --help
scikit-obliquetree --name Roman

or if installed with Poetry:

poetry run scikit-obliquetree --help
poetry run scikit-obliquetree --name Roman

Example

Example of usage:

from sklearn.datasets import load_boston
from sklearn.ensemble import BaggingRegressor
from sklearn.model_selection import cross_val_score

from scikit_obliquetree.HHCART import HouseHolderCART
from scikit_obliquetree.segmentor import MSE, MeanSegmentor

X, y = load_boston(return_X_y=True)
reg = BaggingRegressor(
    HouseHolderCART(MSE(), MeanSegmentor(), max_depth=3),
    n_estimators=100,
    n_jobs=-1,
)
print('CV Score', cross_val_score(reg, X, y))

🛡 License

License

This project is licensed under the terms of the Apache Software License 2.0 license. See LICENSE for more details.

📃 Citation

@misc{scikit-obliquetree,
  author = {ECNU},
  title = {Oblique Decision Tree in Python},
  year = {2021},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/zhenlingcn/scikit-obliquetree}}
}

Credits

This project was generated with python-package-template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scikit-obliquetree-0.1.3.tar.gz (19.4 kB view hashes)

Uploaded Source

Built Distribution

scikit_obliquetree-0.1.3-py3-none-any.whl (20.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page