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()
Utilisons la validation croisée pour évaluer une régression logistique simple sur ces 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 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 dubest_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.
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 variablepipe. - Créer un dictionnaire
param_gridcontenant 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
Génial!
Completion taux amélioré à 3.33
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()
Utilisons la validation croisée pour évaluer une régression logistique simple sur ces 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 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 dubest_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.
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 variablepipe. - Créer un dictionnaire
param_gridcontenant 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