FERL Example#
This example trains a compact FERL classifier and inspects both point and native evidential predictions.
import numpy as np
from ex_fuzzy import FERL
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
iris = load_iris(as_frame=True)
X_train, X_test, y_train, y_test = train_test_split(
iris.data,
iris.target,
test_size=0.25,
random_state=0,
stratify=iris.target,
)
ferl = FERL(
max_rules=10,
max_depth=5,
min_improvement=0.0,
random_state=0,
)
ferl.fit(X_train, y_train, patience=5)
predictions = ferl.predict(X_test)
betp, belief, plausibility, ignorance = ferl.predict_credal(X_test)
prediction_sets = ferl.predict_set(X_test)
print(f"accuracy={accuracy_score(y_test, predictions):.3f}")
print(f"rules={ferl.n_rules()}")
print(f"mean ignorance={ignorance.mean():.3f}")
print(f"mean set size={prediction_sets.sum(axis=1).mean():.2f}")
for row in range(5):
labels = iris.target_names[ferl.classes_[prediction_sets[row]]]
print(
row,
labels.tolist(),
np.round(betp[row], 3),
round(float(ignorance[row]), 3),
)
ferl.print_tree()
The equivalent runnable script is
Demos/demos_module/ferl_demo.py in the source distribution.