scikit-obliquetree icon indicating copy to clipboard operation
scikit-obliquetree copied to clipboard

Oblique Decision Tree in Python

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.