Défi : Classification de Données Inséparables
Vous utiliserez le jeu de données suivant avec deux caractéristiques :
1234import 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())
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 :
123456import 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()
Utilisation de la validation croisée pour évaluer une régression logistique simple sur cet ensemble de données :
123456789101112131415161718import 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}')
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.
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 variablepipe. - Créer un dictionnaire
param_gridavec les valeurs[0.01, 0.1, 1, 10, 100]pour l'hyperparamètreC. - Initialiser et entraîner un objet
GridSearchCVet stocker l'objet entraîné dans la variablegrid_cv.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 4.17
Défi : Classification de Données Inséparables
Glissez pour afficher le menu
Vous utiliserez le jeu de données suivant avec deux caractéristiques :
1234import 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())
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 :
123456import 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()
Utilisation de la validation croisée pour évaluer une régression logistique simple sur cet ensemble de données :
123456789101112131415161718import 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}')
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.
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 variablepipe. - Créer un dictionnaire
param_gridavec les valeurs[0.01, 0.1, 1, 10, 100]pour l'hyperparamètreC. - Initialiser et entraîner un objet
GridSearchCVet stocker l'objet entraîné dans la variablegrid_cv.
Solution
Merci pour vos commentaires !
single