Introduction
Dans ce laboratoire, nous explorerons les fonctionnalités et l'utilisation des algorithmes multiclasse et multioutput dans scikit-learn. La classification multiclasse est une tâche de classification où les échantillons sont assignés à plus de deux classes. La classification multioutput, en revanche, prédit plusieurs propriétés pour chaque échantillon. Nous aborderons les sujets suivants :
- Classification multiclasse
- Classification multilabel
- Classification multiclasse-multioutput
- Régression multioutput
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 la pratique.
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 votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Classification multiclasse
Description du problème
La classification multiclasse est une tâche de classification avec plus de deux classes. Chaque échantillon est assigné à une seule classe.
Format de la cible
Une représentation valide des cibles multiclasse est un vecteur 1D ou colonne contenant plus de deux valeurs discrètes.
Exemple
Utilisons le jeu de données Iris pour démontrer la classification multiclasse :
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
## Chargez le jeu de données Iris
X, y = datasets.load_iris(return_X_y=True)
## Ajustez un modèle de régression logistique en utilisant OneVsRestClassifier
model = OneVsRestClassifier(LogisticRegression())
model.fit(X, y)
## Faites des prédictions
predictions = model.predict(X)
print(predictions)
Classification multilabel
Description du problème
La classification multilabel est une tâche de classification où chaque échantillon peut être assigné plusieurs étiquettes. Le nombre d'étiquettes que chaque échantillon peut avoir est supérieur à deux.
Format de la cible
Une représentation valide des cibles multilabel est une matrice binaire, où chaque ligne représente un échantillon et chaque colonne représente une classe. Une valeur de 1 indique la présence de l'étiquette dans l'échantillon, tandis que 0 ou -1 indique son absence.
Exemple
Créons un problème de classification multilabel en utilisant la fonction make_classification :
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier
## Générez un problème de classification multilabel
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, random_state=0)
y = y.reshape(-1, 1)
## Ajustez un classifieur de forêt aléatoire multioutput
model = MultiOutputClassifier(RandomForestClassifier())
model.fit(X, y)
## Faites des prédictions
predictions = model.predict(X)
print(predictions)
Classification multiclasse-multioutput
Description du problème
La classification multiclasse-multioutput, également connue sous le nom de classification multitâche, prédit plusieurs propriétés non binaires pour chaque échantillon. Chaque propriété peut avoir plus de deux classes.
Format de la cible
Une représentation valide des cibles multiclasse-multioutput est une matrice dense, où chaque ligne représente un échantillon et chaque colonne représente une propriété ou une classe différente.
Exemple
Créons un problème de classification multiclasse-multioutput en utilisant la fonction make_classification :
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.svm import SVC
## Générez un problème de classification multiclasse-multioutput
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, n_classes=3, random_state=0)
## Ajustez un classifieur à vecteurs de support multioutput
model = MultiOutputClassifier(SVC())
model.fit(X, y)
## Faites des prédictions
predictions = model.predict(X)
print(predictions)
Régression multioutput
Description du problème
La régression multioutput prédit plusieurs propriétés numériques pour chaque échantillon. Chaque propriété est une variable numérique, et le nombre de propriétés peut être supérieur ou égal à deux.
Format de la cible
Une représentation valide des cibles de régression multioutput est une matrice dense, où chaque ligne représente un échantillon et chaque colonne représente une propriété différente.
Exemple
Créons un problème de régression multioutput en utilisant la fonction make_regression :
from sklearn.datasets import make_regression
from sklearn.multioutput import MultiOutputRegressor
from sklearn.linear_model import LinearRegression
## Générez un problème de régression multioutput
X, y = make_regression(n_samples=100, n_features=10, n_targets=3, random_state=0)
## Ajustez un modèle de régression linéaire multioutput
model = MultiOutputRegressor(LinearRegression())
model.fit(X, y)
## Faites des prédictions
predictions = model.predict(X)
print(predictions)
Sommaire
Dans ce laboratoire, nous avons exploré les algorithmes multiclasse et multioutput dans scikit-learn. Nous avons abordé la classification multiclasse, la classification multilabel, la classification multiclasse-multioutput et la régression multioutput. Ces algorithmes nous permettent de résoudre des tâches complexes de classification et de régression avec plusieurs cibles ou classes.