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
Can you explain how to use polynomial regression with this dataset?
How does GridSearchCV help in finding the optimal C parameter?
What is the purpose of using a Pipeline in this context?
Génial!
Completion taux amélioré à 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