Metadata-Version: 2.4
Name: pyfru
Version: 0.1.1
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: numpy>=2.0.0
Requires-Dist: pyarrow>=23.0.1
Requires-Dist: pytest>=9 ; extra == 'dev'
Requires-Dist: pandas>=3 ; extra == 'dev'
Requires-Dist: furo>=2025.12.19 ; extra == 'dev'
Requires-Dist: myst-parser>=5.1.0 ; extra == 'dev'
Requires-Dist: ruff>=0.15.12 ; extra == 'dev'
Requires-Dist: sphinx>=9.1.0 ; extra == 'dev'
Provides-Extra: dev
Summary: Blazingly fast Random Forest with arrow support (pandas, polars, pyarrow etc.)
Author-email: Chris Piwonski <fruarrow@kpiwonski.com>
License-Expression: GPL-3.0-or-later
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: documentation, https://kpiwonski.github.io/fru-arrow/
Project-URL: repository, https://github.com/kpiwonski/fru-arrow

# Fru-arrow

[![PyPI Version](https://img.shields.io/pypi/v/pyfru)](https://pypi.org/project/pyfru/)
[![Crates.io Version](https://img.shields.io/crates/v/fru-arrow)](https://crates.io/crates/fru-arrow)

[Link to preprint](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6864991) |
[Pyfru docs](https://kpiwonski.github.io/fru-arrow/) |
[R version](https://cran.r-project.org/web/packages/fru/index.html)

Fru-arrow is a highly performant implementation of the **Random Forest** model. It uses Arrow PyCapsule underneath,
making integration with any library that supports it - ``polars``, ``pandas``, ``pyarrow`` straightforward.
Moreover, it features permutation importance with a novel, highly optimized algorithm.
It can be used for both **classification** and **regression**, as well as out-of-bag predictions.

Fru is typically anywhere from a few times to several thousand times faster than scikit-learn's Random Forest implementation.
The performance gap widens as the number of threads increases.

The plot below illustrates this difference.

![Compare to scikit](https://raw.githubusercontent.com/kpiwonski/fru-arrow/refs/heads/main/plt_cmp_scikit.png)

