Introduction
Dans ce laboratoire, nous allons apprendre à générer un ensemble de données à étiquetage multiple en utilisant la fonction make_multilabel_classification de la bibliothèque Scikit-Learn. Cette fonction génère des échantillons aléatoires de données à étiquetage multiple, où chaque échantillon a des comptes de deux caractéristiques, qui sont distribuées différemment dans chacune des deux classes.
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 Carnet de notes pour accéder au carnet Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Importez les bibliothèques requises et définissez les constantes
Tout d'abord, nous devons importer les bibliothèques requises et définir les couleurs et la constante de graine aléatoire pour générer l'ensemble de données à étiquetage multiple.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_multilabel_classification as make_ml_clf
COLORS = np.array(
[
"!",
"#FF3333", ## rouge
"#0198E1", ## bleu
"#BF5FFF", ## violet
"#FCD116", ## jaune
"#FF7216", ## orange
"#4DBD33", ## vert
"#87421F", ## brun
]
)
## Utilisez la même graine aléatoire pour plusieurs appels à make_multilabel_classification pour
## vous assurer d'avoir les mêmes distributions
RANDOM_SEED = np.random.randint(2**10)
Définissez la fonction de tracé
Ensuite, nous définissons une fonction plot_2d qui trace l'ensemble de données à étiquetage multiple généré aléatoirement. Elle prend trois arguments : n_labels, n_classes et length.
def plot_2d(ax, n_labels=1, n_classes=3, length=50):
X, Y, p_c, p_w_c = make_ml_clf(
n_samples=150,
n_features=2,
n_classes=n_classes,
n_labels=n_labels,
length=length,
allow_unlabeled=False,
return_distributions=True,
random_state=RANDOM_SEED,
)
ax.scatter(
X[:, 0], X[:, 1], color=COLORS.take((Y * [1, 2, 4]).sum(axis=1)), marker="."
)
ax.scatter(
p_w_c[0] * length,
p_w_c[1] * length,
marker="*",
linewidth=0.5,
edgecolor="black",
s=20 + 1500 * p_c**2,
color=COLORS.take([1, 2, 4]),
)
ax.set_xlabel("Feature 0 count")
return p_c, p_w_c
Cette fonction génère l'ensemble de données en utilisant la fonction make_multilabel_classification avec les paramètres spécifiés. Ensuite, elle trace l'ensemble de données à l'aide de la fonction scatter de la bibliothèque Matplotlib. La fonction renvoie les probabilités de classe et les probabilités de caractéristique.
Tracez l'ensemble de données
Maintenant, nous traçons l'ensemble de données à étiquetage multiple généré aléatoirement en utilisant la fonction plot_2d. Nous créons une figure avec deux sous-graphiques et appelons la fonction plot_2d pour chaque sous-graphique avec des valeurs de paramètre différentes.
_, (ax1, ax2) = plt.subplots(1, 2, sharex="row", sharey="row", figsize=(8, 4))
plt.subplots_adjust(bottom=0.15)
p_c, p_w_c = plot_2d(ax1, n_labels=1)
ax1.set_title("n_labels=1, length=50")
ax1.set_ylabel("Feature 1 count")
plot_2d(ax2, n_labels=3)
ax2.set_title("n_labels=3, length=50")
ax2.set_xlim(left=0, auto=True)
ax2.set_ylim(bottom=0, auto=True)
plt.show()
Affichez les probabilités de classe et de caractéristique
Enfin, nous affichons les probabilités de classe et de caractéristique pour chaque classe en utilisant les probabilités de classe et de caractéristique renvoyées par la fonction plot_2d.
print("Les données ont été générées à partir de (random_state=%d):" % RANDOM_SEED)
print("Classe", "P(C)", "P(w0|C)", "P(w1|C)", sep="\t")
for k, p, p_w in zip(["rouge", "bleu", "jaune"], p_c, p_w_c.T):
print("%s\t%0.2f\t%0.2f\t%0.2f" % (k, p, p_w[0], p_w[1]))
Sommaire
Dans ce laboratoire, nous avons appris à générer un ensemble de données à étiquetage multiple en utilisant la fonction make_multilabel_classification de la bibliothèque Scikit-Learn. Nous avons également appris à tracer l'ensemble de données et à afficher les probabilités de classe et de caractéristique.