skip to navigation
skip to content

rgf_python 2.0.3

Scikit-learn Wrapper for Regularized Greedy Forest


The wrapper of machine learning algorithm Regularized Greedy Forest (RGF) [1] for Python.


Scikit-learn interface and possibility of usage for multiclass classification problem.

Original RGF implementation is available only for regression and binary classification, but rgf_python is also available for multiclass classification by “One-vs-Rest” method.


from sklearn import datasets
from sklearn.utils.validation import check_random_state
from sklearn.model_selection import StratifiedKFold, cross_val_score
from rgf.sklearn import RGFClassifier

iris = datasets.load_iris()
rng = check_random_state(0)
perm = rng.permutation( =[perm] =[perm]

rgf = RGFClassifier(max_leaf=400,

n_folds = 3

rgf_scores = cross_val_score(rgf,

rgf_score = sum(rgf_scores)/n_folds
print('RGF Classfier score: {0:.5f}'.format(rgf_score))

More examples could be found here.

Software Requirements

  • Python (2.7 or >= 3.4)
  • scikit-learn (>= 0.18)


From PyPI using pip:

pip install rgf_python

or from GitHub:

git clone
cd rgf_python
python install

If you have any problems while installing by methods listed above you should build RGF executable file from binaries by your own and place compiled executable file into directory which is included in environmental variable ‘PATH’ or into directory with installed package. Alternatively, you may specify actual location of RGF executable file and directory for placing temp files by corresponding flags in configuration file .rgfrc, which you should create into your home directory. The default values are platform dependent: for Windows exe_location=$HOME/rgf.exe, temp_location=$HOME/temp/rgf and for others exe_location=$HOME/rgf, temp_location=/tmp/rgf. Here is the example of .rgfrc file:

exe_location=C:/Program Files/RGF/bin/rgf.exe
temp_location=C:/Program Files/RGF/temp

Also, you may directly specify installation without automatic compilation:

pip install rgf_python --install-option=--nocompilation


git clone
cd rgf_python
python install --nocompilation

sudo (or administrator privileges in Windows) may be needed to perform commands.

Here is the guide how you can build RGF executable file from binaries. The file will be in rgf_python/include/rgf/bin folder.


Precompiled file

The easiest way. Just take precompiled file from rgf_python/include/rgf/bin. For Windows 32-bit rename rgf32.exe to rgf.exe and take it.

Visual Studio (existing solution)
  1. Open directory rgf_python/include/rgf/Windows/rgf.
  2. Open rgf.sln file with Visual Studio and choose BUILD->Build Solution (Ctrl+Shift+B). If you are asked to upgrade solution file after opening it click OK. If you have errors about Platform Toolset go to PROJECT-> Properties-> Configuration Properties-> General and select the toolset installed on your machine.
MinGW (existing makefile)

Build executable file with MinGW g++ from existing makefile (you may want to customize this file for your environment).

cd rgf_python/include/rgf/build
CMake and Visual Studio

Create solution file with CMake and then compile with Visual Studio.

cd rgf_python/include/rgf/build
cmake ../ -G "Visual Studio 10 2010"
cmake --build . --config Release

If you are compiling on 64-bit machine then add Win64 to the end of generator’s name: Visual Studio 10 2010 Win64. We tested following versions of Visual Studio:

  • Visual Studio 10 2010 [Win64]
  • Visual Studio 11 2012 [Win64]
  • Visual Studio 12 2013 [Win64]
  • Visual Studio 14 2015 [Win64]
  • Visual Studio 15 2017 [Win64]

Other versions may work but are untested.

CMake and MinGW

Create makefile with CMake and then compile with MinGW.

cd rgf_python/include/rgf/build
cmake ../ -G "MinGW Makefiles"
cmake --build . --config Release


g++ (existing makefile)

Build executable file with g++ from existing makefile (you may want to customize this file for your environment).

cd rgf_python/include/rgf/build

Create makefile with CMake and then compile.

cd rgf_python/include/rgf/build
cmake ../
cmake --build . --config Release

Tuning Hyper-parameters

You can tune hyper-parameters as follows.

  • max_leaf: Appropriate values are data-dependent and usually varied from 1000 to 10000.
  • test_interval: For efficiency, it must be either multiple or divisor of 100 (default value of the optimization interval).
  • algorithm: You can select “RGF”, “RGF Opt” or “RGF Sib”.
  • loss: You can select “LS”, “Log” or “Expo”.
  • reg_depth: Must be no smaller than 1. Meant for being used with algorithm = “RGF Opt” or “RGF Sib”.
  • l2: Either 1, 0.1, or 0.01 often produces good results though with exponential loss (loss = “Expo”) and logistic loss (loss = “Log”), some data requires smaller values such as 1e-10 or 1e-20.
  • sl2: Default value is equal to l2. On some data, l2/100 works well.
  • normalize: If turned on, training targets are normalized so that the average becomes zero.
  • min_samples_leaf: Smaller values may slow down training. Too large values may degrade model accuracy.
  • n_iter: Number of iterations of coordinate descent to optimize weights.
  • n_tree_search: Number of trees to be searched for the nodes to split. The most recently grown trees are searched first.
  • opt_interval: Weight optimization interval in terms of the number of leaf nodes.
  • learning_rate: Step size of Newton updates used in coordinate descent to optimize weights.

Detailed instruction of tuning hyper-parameters is here.

Using at Kaggle Kernel

Now, Kaggle Kernel supports rgf_python. Please see this page.


rgf_python is distributed under the GNU General Public License v3 (GPLv3). Please read file LICENSE for more information.

rgf_python includes RGF version 1.2 which is distributed under the GPLv3. Original CLI implementation of RGF you can download at

We thank Rie Johnson and Tong Zhang (authors of RGF).


Shamelessly, much part of the implementation is based on the following code. Thanks!

File Type Py Version Uploaded on Size
rgf_python-2.0.3.tar.gz (md5) Source 2017-10-03 170KB