Python中的现代决策树
项目描述
scikit-tree
scikit-tree是一个兼容scikit-learn的API,用于构建最先进的决策树。这包括无监督树、斜树、不确定性树、分位数树和因果树。
树模型经受了时间的考验,并且一直被用于现代数据科学和机器学习应用。它们在问题样本有限的情况下表现尤其出色,并且是灵活的学习者,可以应用于各种不同的设置,如表格、图像、时间序列、基因组学、EEG数据等。
文档
有关我们开发版本的文档,请参阅此处:https://docs.neurodata.io/scikit-tree/dev/index.html
为什么是斜树以及为什么是scikit-learn之外的树?
2001年,Leo Breiman提出了两种类型的随机森林。一种被称为Forest-RI
,即轴对齐的传统随机森林。另一种被称为Forest-RC
,即随机斜线性组合随机森林。它通过随机组合特征来执行分割。MORF通过提出额外的函数来组合特征,在Forest-RC
的基础上进行构建。其他现代树变体,如典型相关森林(CCF)、扩展隔离森林、分位数森林或无监督随机森林,在解决现实世界问题中使用稳健的决策树模型时也很重要。
安装
我们的安装将尽可能遵循scikit-learn的安装方式,因为我们包含Cython代码子类,或者受到scikit-learn树子模块的启发。
依赖项
我们至少需要
* Python (>=3.9)
* numpy
* scipy
* scikit-learn >= 1.3
使用Pip安装(https://pypi.ac.cn/project/scikit-tree/)
在conda环境中使用pip安装是推荐的路线。
pip install scikit-tree
使用Meson本地构建(针对开发者)
确保您已安装必要的包
# install build dependencies
pip install -r build_requirements.txt
# you may need these optional dependencies to build scikit-learn locally
conda install -c conda-forge joblib threadpoolctl pytest compilers llvm-openmp
我们使用spin
CLI来抽象构建细节
# run the build using Meson/Ninja
./spin build
# you can run the following command to see what other options there are
./spin --help
./spin build --help
# For example, you might want to start from a clean build
./spin build --clean
# or build in parallel for faster builds
./spin build -j 2
# you will need to double check the build-install has the proper path
# this might be different from machine to machine
export PYTHONPATH=${PWD}/build-install/usr/lib/python3.9/site-packages
# run specific unit tests
./spin test -- sktree/tree/tests/test_tree.py
# you can bring up the CLI menu
./spin --help
您也可以使用Meson/Ninja本身完成相同操作。运行以下命令构建本地文件
# generate ninja make files
meson build --prefix=$PWD/build
# compile
ninja -C build
# install scikit-tree package
meson install -C build
export PYTHONPATH=${PWD}/build/lib/python3.9/site-packages
# to check installation, you need to be in a different directory
cd docs;
python -c "from sktree import tree"
python -c "import sklearn; print(sklearn.__version__);"
在本地构建后,您可以使用可编辑安装(警告:这仅在本地注册Python更改)
pip install --no-build-isolation --editable .
或者如果您已安装spin v0.8+,可以直接运行
spin install
开发
我们欢迎对现代基于树的算法的贡献。我们使用Cython来实现快速的C/C++速度,同时遵守与scikit-learn兼容的(已测试)API。此外,我们的Cython内部易于扩展,因为它们遵循scikit-learn的内部Cython API。
由于scikit-learn当前树内部Cython代码的状态,在扩展scikit-learn的决策树模型API时,我们必须利用scikit-learn的分支https://github.com/neurodata/scikit-learn。具体来说,我们在我们的子模块中扩展了scikit-learn中树子模块的Python和Cython API,以便我们可以引入此包中包含的树模型。因此,这些扩展了决策树模型的功能,这是scikit-learn本身目前无法实现的。例如,我们引入了一个抽象API,允许用户实现自己的斜分。我们的计划是在未来对这些功能进行基准测试,并在满足适用性和纳入标准的情况下将其引入scikit-learn。
参考文献
项目详情
scikit_tree-0.8.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0368b53d02c7019d78b5ded0935bd9db4a3f44c8496d91c393eb529ba4183bd1 |
|
MD5 | b52337e554df0373f60f13f77eddbb9c |
|
BLAKE2b-256 | f038cace199026c94c8a822c8b3bc947977f2d8f0f06b46453a1dfbe93ca96b4 |
scikit_tree-0.8.0-cp312-cp312-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 68a2ca36bcb0f7b99101e987224763bbd78bd1c0ed7b35b679c88c99a83036ce |
|
MD5 | ed01b0609229bf95b9aaeb42d01da1a0 |
|
BLAKE2b-256 | 919ffc39868f9132ce15fc626de3f1b1d69e7503e9682f6ee14947a9f707a649 |
scikit_tree-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88fa18ff4eedbe185c8331c62d72dbf019007fe13be4a9e2f3c68cf3fc070206 |
|
MD5 | e134c644e599ac2a54c5c064c48e8029 |
|
BLAKE2b-256 | 9577b800a34ee4b1fb70c1e881a0a588c84ecf7cf894f7cc3274d4e24f83b10f |
scikit_tree-0.8.0-cp312-cp312-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20fc8732293902d66c8b532705de46fa86a0ea6119ff1aec01b33cc8c51c2d29 |
|
MD5 | 9567fb404129c6566aa9a1e4481fd236 |
|
BLAKE2b-256 | 15356e417d7a51aa63921017318d68a4c0ac12d619847d01ff3147e490eb9015 |
scikit_tree-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e87d71936ead83a719e560147217960ffce8320cd8ae8cac14723189d3d082cc |
|
MD5 | cad2fe7c955dd6b8521e7028ef2d1ff8 |
|
BLAKE2b-256 | 6997b639e0da552767b9193dfe5b8a3d390a9b36f0657acf2b14266ae9344205 |
scikit_tree-0.8.0-cp311-cp311-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 17adc754cfed3820300e83c07a7e258e960c19755edf40d41dcfaaac2a90c1d0 |
|
MD5 | 366f81b08048bb91ab1d5fa84dea25eb |
|
BLAKE2b-256 | 48069c732a6ed327bc7b106eb9e538a9b399523e7245a0a3774ac303c1c47448 |
scikit_tree-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5ec7d0069ef5f89890fed9874f22345a8e32355877f6efdf4453a029f32d3e0e |
|
MD5 | 7b33a2cc3ced031de275e6e0d49172f7 |
|
BLAKE2b-256 | 014428938054c8f962b4dbfba5534797e5d24d0d31a8d612399bf019219b019a |
scikit_tree-0.8.0-cp311-cp311-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 03aa4deb67434cfb322e5eb6ea00c7af94374d09ccaa0d79d2f892658d54104a |
|
MD5 | 4ae6e39214deade5c1bbe0730e71da41 |
|
BLAKE2b-256 | 5e9e55291841e0c9eb48ef0b22b628b7060cf3401eb51abf454511ed11dc802d |
哈希值 用于 scikit_tree-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2eb7cf975d539968d436b78990328aed198251cfdfac56de4b79bd2bd0ddf5c5 |
|
MD5 | 679bfab36e69d7843c91fc931e7850f3 |
|
BLAKE2b-256 | 55867431c53a15d997552408891591a03d64ab02888198b261de4cc7b9719e6a |
哈希值 用于 scikit_tree-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 75f12a80a5c688c8b370d112772bf9e7ee90d323aa59ad3ac0a0118a7028a78d |
|
MD5 | 1ceb2dbcafe8a1407140a91373233d36 |
|
BLAKE2b-256 | 866da42d648d7e3b037c1f1d4e9bbb0a5aaaa2f183f4af3f0672bfdd7d62481d |
哈希值 用于 scikit_tree-0.8.0-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eaba2f2eadab26447afd138247b0637e92224caa6d3d6d2b4098d414d0f7ccfd |
|
MD5 | b8034371c7a75665d0dc8d606866fb09 |
|
BLAKE2b-256 | 2ade4b797591a468e83ccdc9ba3042762c2203dbcf2df9fb31753a58cf3c7420 |
哈希值 用于 scikit_tree-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b1b3eff463c572cf837f7fff61485345d74ae33ff0226830bc32dff339fc5da |
|
MD5 | b8625ea844bb546eab8f2df67ffa9094 |
|
BLAKE2b-256 | 258d714f5290cafb7c27c25764426d86c99fe3897fbee88e7ff3530716bdf79a |
哈希值 用于 scikit_tree-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 92fc13bcc19ab2e0ce4e6c263182f20195b3a3e60a468da9c5e78b210d90be63 |
|
MD5 | 01155e4fc908ccb3b259f2de40e90795 |
|
BLAKE2b-256 | 45fd0086a6c2fd1c171c7a64a091072213f6518f403023c523af17aa77ccce80 |
哈希值 用于 scikit_tree-0.8.0-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f74d09a515c53862eb305e0432b5de1e9716a99d9d04d5f08338319d19755c2 |
|
MD5 | df87f7d5a9309bda76c4e310579c336c |
|
BLAKE2b-256 | 62f20a230a02ae5b4d96c419ea52bc4e603464f6240c0d8b1011a8d5d642b246 |
哈希值 用于 scikit_tree-0.8.0-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f4d3c4a4bea30e98f492d2b40c4e6531141b04f3bc4b01889a98f90bf42b8fe3 |
|
MD5 | be67ded2081743d8d9887ce2efa5e94a |
|
BLAKE2b-256 | e251654e0f5e5387631364250defd9e6bfea378c35372d413e9934c1cfc7b0f2 |