Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Classification de Données Inséparables | Section
Fondamentaux de l'apprentissage supervisé

bookDéfi : Classification de Données Inséparables

Vous utiliserez le jeu de données suivant avec deux caractéristiques :

1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
copy

Si vous exécutez le code ci-dessous et examinez le nuage de points obtenu, vous constaterez que le jeu de données n'est pas linéairement séparable :

123456
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
copy

Utilisons la validation croisée pour évaluer une régression logistique simple sur ces données :

123456789101112131415161718
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
copy

Comme vous pouvez le constater, la régression logistique classique n'est pas adaptée à cette tâche. L'utilisation de la régression polynomiale peut améliorer les performances du modèle. De plus, l'emploi de GridSearchCV permet d'identifier le paramètre optimal C pour une meilleure précision.

Constructeur :

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — l'objet du modèle ;
  • param_grid — dictionnaire contenant les valeurs des paramètres à explorer ;
  • scoring — la métrique utilisée pour l'évaluation croisée ;
  • cv — le nombre de plis (5 par défaut) ;

Méthodes :

  • fit(X, y) — entraînement des modèles avec X, y ;
  • predict(X) — prédiction de la classe pour X ;
  • score(X, y) — retourne la précision pour l'ensemble X, y ;

Attributs :

  • best_estimator_ — objet du modèle avec le meilleur score ;
  • best_score_ — score du best_estimator_.

Cette tâche utilise également la classe Pipeline. Celle-ci peut être considérée comme une séquence d'étapes de prétraitement. Sa méthode .fit_transform() applique séquentiellement .fit_transform() à chaque étape du pipeline.

Tâche

Swipe to start coding

Un ensemble de données vous est fourni sous forme de DataFrame dans la variable df.

  • Créer un pipeline qui inclura les caractéristiques polynomiales de degré 2 de X, puis appliquer une mise à l'échelle, et stocker le pipeline résultant dans la variable pipe.
  • Créer un dictionnaire param_grid contenant les valeurs [0.01, 0.1, 1, 10, 100] pour l'hyperparamètre C.
  • Initialiser et entraîner un objet GridSearchCV et stocker l'objet entraîné dans la variable grid_cv.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 26
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

bookDéfi : Classification de Données Inséparables

Glissez pour afficher le menu

Vous utiliserez le jeu de données suivant avec deux caractéristiques :

1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
copy

Si vous exécutez le code ci-dessous et examinez le nuage de points obtenu, vous constaterez que le jeu de données n'est pas linéairement séparable :

123456
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
copy

Utilisons la validation croisée pour évaluer une régression logistique simple sur ces données :

123456789101112131415161718
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
copy

Comme vous pouvez le constater, la régression logistique classique n'est pas adaptée à cette tâche. L'utilisation de la régression polynomiale peut améliorer les performances du modèle. De plus, l'emploi de GridSearchCV permet d'identifier le paramètre optimal C pour une meilleure précision.

Constructeur :

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — l'objet du modèle ;
  • param_grid — dictionnaire contenant les valeurs des paramètres à explorer ;
  • scoring — la métrique utilisée pour l'évaluation croisée ;
  • cv — le nombre de plis (5 par défaut) ;

Méthodes :

  • fit(X, y) — entraînement des modèles avec X, y ;
  • predict(X) — prédiction de la classe pour X ;
  • score(X, y) — retourne la précision pour l'ensemble X, y ;

Attributs :

  • best_estimator_ — objet du modèle avec le meilleur score ;
  • best_score_ — score du best_estimator_.

Cette tâche utilise également la classe Pipeline. Celle-ci peut être considérée comme une séquence d'étapes de prétraitement. Sa méthode .fit_transform() applique séquentiellement .fit_transform() à chaque étape du pipeline.

Tâche

Swipe to start coding

Un ensemble de données vous est fourni sous forme de DataFrame dans la variable df.

  • Créer un pipeline qui inclura les caractéristiques polynomiales de degré 2 de X, puis appliquer une mise à l'échelle, et stocker le pipeline résultant dans la variable pipe.
  • Créer un dictionnaire param_grid contenant les valeurs [0.01, 0.1, 1, 10, 100] pour l'hyperparamètre C.
  • Initialiser et entraîner un objet GridSearchCV et stocker l'objet entraîné dans la variable grid_cv.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 26
single

single

some-alt