Snapshot of scikit-learn-contrib/skope-rules: 663★, Jupyter Notebook. machine learning with logical rules in Python
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Skope-rules is a Python machine learning module built on top of
scikit-learn and distributed under the 3-Clause BSD license.
Skope-rules aims at learning logical, interpretable rules for "scoping" a target
class, i.e. detecting with high precision instances of this class.
Skope-rules is a trade off between the interpretability of a Decision Tree
and the modelization power of a Random Forest.
See the AUTHORS.rst <AUTHORS.rst>_ file for a list of contributors.
.. image:: schema.png
Installation
You can get the latest sources with pip :
pip install skope-rules
Quick Start
SkopeRules can be used to describe classes with logical rules :
.. code:: python
from sklearn.datasets import load_iris
from skrules import SkopeRules
dataset = load_iris()
feature_names = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
clf = SkopeRules(max_depth_duplication=2,
n_estimators=30,
precision_min=0.3,
recall_min=0.1,
feature_names=feature_names)
for idx, species in enumerate(dataset.target_names):
X, y = dataset.data, dataset.target
clf.fit(X, y == idx)
rules = clf.rules_[0:3]
print("Rules for iris", species)
for rule in rules:
print(rule)
print()
print(20*'=')
print()
::
SkopeRules can also be used as a predictor if you use the "score_top_rules" method :
.. code:: python
from sklearn.datasets import load_boston
from sklearn.metrics import precision_recall_curve
from matplotlib import pyplot as plt
from skrules import SkopeRules
dataset = load_boston()
clf = SkopeRules(max_depth_duplication=None,
n_estimators=30,
precision_min=0.2,
recall_min=0.01,
feature_names=dataset.feature_names)
X, y = dataset.data, dataset.target > 25
X_train, y_train = X[:len(y)//2], y[:len(y)//2]
X_test, y_test = X[len(y)//2:], y[len(y)//2:]
clf.fit(X_train, y_train)
y_score = clf.score_top_rules(X_test) # Get a risk score for each test example
precision, recall, _ = precision_recall_curve(y_test, y_score)
plt.plot(recall, precision)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision Recall curve')
plt.show()
::
For more examples and use cases please check our documentation <http://skope-rules.readthedocs.io/en/latest/>.
You can also check the demonstration notebooks <notebooks/>.
Links with existing literature
The main advantage of decision rules is that they are offering interpretable models. The problem of generating such rules has been widely considered in machine learning, see e.g. RuleFit [1], Slipper [2], LRI [3], MLRules[4].
A decision rule is a logical expression of the form "IF conditions THEN response". In a binary classification setting, if an instance satisfies conditions of the rule, then it is assigned to one of the two classes. If this instance does not satisfy conditions, it remains unassigned.
In [2, 3, 4], rules induction is done by considering each single decision rule as a base classifier in an ensemble, which is built by greedily minimizing some loss function.
In [1], rules are extracted from an ensemble of trees; a weighted combination of these rules is then built by solving a L1-regularized optimization problem over the weights as described in [5].
In this package, we use the second approach. Rules are extracted from tree ensemble, which allow us to take advantage of existing fast algorithms (such as bagged decision trees, or gradient boosting) to produce such tree ensemble. Too similar or duplicated rules are then removed, based on a similarity threshold of their supports..
The main goal of this package is to provide rules verifying precision and recall conditions. It still implement a score (decision_function) method, but which does not solve the L1-regularized optimization problem as in [1]. Instead, weights are simply proportional to the OOB associated precision of the rule.
This package also offers convenient methods to compute predictions with the k most precise rules (cf score_top_rules() and predict_top_rules() functions).
[1] Friedman and Popescu, Predictive learning via rule ensembles,Technical Report, 2005.
[2] Cohen and Singer, A simple, fast, and effective rule learner, National Conference on Artificial Intelligence, 1999.
[3] Weiss and Indurkhya, Lightweight rule induction, ICML, 2000.
[4] Dembczyński, Kotłowski and Słowiński, Maximum Likelihood Rule Ensembles, ICML, 2008.
[5] Friedman and Popescu, Gradient directed regularization, Technical Report, 2004.
Dependencies
skope-rules requires:
Python (>= 2.7 or >= 3.3)
NumPy (>= 1.10.4)
SciPy (>= 0.17.0)
Pandas (>= 0.18.1)
Scikit-Learn (>= 0.17.1)
For running the examples Matplotlib >= 1.1.1 is required.
Documentation
You can access the full project documentation here <http://skope-rules.readthedocs.io/en/latest/>_
You can also check the notebooks/ folder which contains some examples of utilization.
Does scikit-learn-contrib/skope-rules have any tags?
TopGit's last sync did not record any GitHub topics for scikit-learn-contrib/skope-rules. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on scikit-learn-contrib/skope-rules?
The most recent commit recorded on scikit-learn-contrib/skope-rules was 2.5 years ago, based on the GitHub push timestamp. The repository has 105 forks — one of the better signals of community interest.
How many stars does scikit-learn-contrib/skope-rules have?
scikit-learn-contrib/skope-rules has 663 GitHub stars — refresh the page for the live number, or check github.com/scikit-learn-contrib/skope-rules. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is scikit-learn-contrib/skope-rules written in?
scikit-learn-contrib/skope-rules is written primarily in Jupyter Notebook. GitHub's language field is based on the largest share of bytes in the default branch.
Where do I read more about scikit-learn-contrib/skope-rules?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/scikit-learn-contrib/skope-rules is the definitive source.
Read full README in the tab above.
Want a second opinion on skope-rules?
Ask an AI that can read this page — one click and you get its take on skope-rules.