Ensemble d'apprentissage

Plutôt que d’utiliser un seul prédicteur, pourquoi ne pas en utiliser plusieurs pour prendre la décision.
L’exemple est celui proposé par Aurelien Geron dans Hands on Machine Learning with Scikit-learn and Tensorflow

Lecture des données

[code] from sklearn.model_selection import train_test_split
# Make two interleaving half circles
# A simple toy dataset to visualize clustering and classification algorithms.
# http://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_moons.html
# n_samples : int, optional (default=100)
# The total number of points generated.
# shuffle : bool, optional (default=True) Whether to shuffle the samples.
# noise : double or None (default=None)
# Standard deviation of Gaussian noise added to the data.
# random_state : int, RandomState instance or None, optional (default=None)
# If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.
from sklearn.datasets import make_moons
X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
[/code]

Définition des estimators

Trois estimateurs sont testés : RandomForestClassifier, LogisticRegression, SVC
[code] from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
log_clf = LogisticRegression(random_state=42)
rnd_clf = RandomForestClassifier(random_state=42)
svm_clf = SVC(random_state=42)
[/code]

Le vote à la majorité est retenu

[code] voting_clf = VotingClassifier(
estimators=[(‘lr’, log_clf), (‘rf’, rnd_clf), (‘svc’, svm_clf)],
voting=’hard’)
voting_clf.fit(X_train, y_train)
[/code]

Présentation des prédictions

[code] from sklearn.metrics import accuracy_score
for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
[/code] Les résultats obtenus montrent que le VotingClassifier (qui utilise les 3 précédents) est le meilleur
[code] LogisticRegression 0.864
RandomForestClassifier 0.872
SVC 0.888
VotingClassifier 0.896
[/code]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *