Introduction
Dans ce laboratoire, nous allons apprendre à tracer les probabilités de classes calculées par le VotingClassifier dans Scikit-Learn. Nous utiliserons trois classifieurs différents, y compris LogisticRegression, GaussianNB et RandomForestClassifier, et calculerons la moyenne de leurs probabilités prédites en utilisant le VotingClassifier. Nous visualiserons ensuite le poids des probabilités en ajustant chaque classifieur sur l'ensemble d'entraînement et en traçant les probabilités de classes prédites pour le premier échantillon du jeu de données.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous réglerons rapidement le problème pour vous.
Initialiser les classifieurs et le jeu de données
Nous allons tout d'abord initialiser trois classifieurs et un jeu de données d'exemple. Nous utiliserons LogisticRegression, GaussianNB et RandomForestClassifier comme classifieurs, et X et y comme jeu de données d'exemple.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier
clf1 = LogisticRegression(max_iter=1000, random_state=123)
clf2 = RandomForestClassifier(n_estimators=100, random_state=123)
clf3 = GaussianNB()
X = np.array([[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2]])
y = np.array([1, 1, 2, 2])
Initialiser le VotingClassifier
Nous allons ensuite initialiser un VotingClassifier à vote mol avec des poids [1, 1, 5], ce qui signifie que les probabilités prédites du RandomForestClassifier comptent 5 fois plus que les poids des autres classifieurs lors du calcul de la probabilité moyenne.
eclf = VotingClassifier(
estimators=[("lr", clf1), ("rf", clf2), ("gnb", clf3)],
voting="soft",
weights=[1, 1, 5],
)
Prédire les probabilités de classes pour tous les classifieurs
Nous allons prédire les probabilités de classes pour tous les classifieurs en utilisant la fonction predict_proba().
probas = [c.fit(X, y).predict_proba(X) for c in (clf1, clf2, clf3, eclf)]
Obtenir les probabilités de classes pour le premier échantillon du jeu de données
Nous allons obtenir les probabilités de classes pour le premier échantillon du jeu de données et les stocker dans class1_1 et class2_1.
class1_1 = [pr[0, 0] for pr in probas]
class2_1 = [pr[0, 1] for pr in probas]
Tracer les probabilités de classes
Nous allons tracer les probabilités de classes pour chaque classifieur et le VotingClassifier à l'aide d'un graphique à barres.
N = 4 ## nombre de groupes
ind = np.arange(N) ## positions des groupes
width = 0.35 ## largeur des barres
fig, ax = plt.subplots()
## barres pour le classifieur 1-3
p1 = ax.bar(ind, np.hstack(([class1_1[:-1], [0]])), width, color="green", edgecolor="k")
p2 = ax.bar(
ind + width,
np.hstack(([class2_1[:-1], [0]])),
width,
color="lightgreen",
edgecolor="k",
)
## barres pour le VotingClassifier
p3 = ax.bar(ind, [0, 0, 0, class1_1[-1]], width, color="blue", edgecolor="k")
p4 = ax.bar(
ind + width, [0, 0, 0, class2_1[-1]], width, color="steelblue", edgecolor="k"
)
## annotations du tracé
plt.axvline(2.8, color="k", linestyle="dashed")
ax.set_xticks(ind + width)
ax.set_xticklabels(
[
"LogisticRegression\npoids 1",
"GaussianNB\npoids 1",
"RandomForestClassifier\npoids 5",
"VotingClassifier\n(probabilités moyennes)",
],
rotation=40,
ha="right",
)
plt.ylim([0, 1])
plt.title("Probabilités de classes pour l'échantillon 1 par différents classifieurs")
plt.legend([p1[0], p2[0]], ["classe 1", "classe 2"], loc="upper left")
plt.tight_layout()
plt.show()
Sommaire
Dans ce laboratoire, nous avons appris à tracer les probabilités de classes calculées par le VotingClassifier dans Scikit-Learn. Nous avons utilisé trois classifieurs différents, y compris LogisticRegression, GaussianNB et RandomForestClassifier, et avons calculé la moyenne de leurs probabilités prédites en utilisant le VotingClassifier. Nous avons ensuite visualisé le poids des probabilités en ajustant chaque classifieur sur l'ensemble d'entraînement et en traçant les probabilités de classes prédites pour le premier échantillon du jeu de données.