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 *