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 | Régression Logistique
Classification avec Python

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

Utilisation de la validation croisée pour évaluer une régression logistique simple sur cet ensemble de 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 aider à améliorer les performances du modèle. De plus, l'utilisation de GridSearchCV permet de trouver le paramètre optimal C pour une meilleure précision.

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 jeu de données vous est fourni sous forme de DataFrame dans la variable df.

  • Créer un pipeline qui inclut les caractéristiques polynomiales de degré 2 de X, applique une mise à l'échelle, et stocker le pipeline résultant dans la variable pipe.
  • Créer un dictionnaire param_grid avec 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 2. Chapitre 6
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

Awesome!

Completion rate improved to 4.17

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

Utilisation de la validation croisée pour évaluer une régression logistique simple sur cet ensemble de 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 aider à améliorer les performances du modèle. De plus, l'utilisation de GridSearchCV permet de trouver le paramètre optimal C pour une meilleure précision.

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 jeu de données vous est fourni sous forme de DataFrame dans la variable df.

  • Créer un pipeline qui inclut les caractéristiques polynomiales de degré 2 de X, applique une mise à l'échelle, et stocker le pipeline résultant dans la variable pipe.
  • Créer un dictionnaire param_grid avec 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 2. Chapitre 6
single

single

some-alt