Distribution des caractéristiques et analyse de la cible
Analyser les relations entre caractéristiques et cible, détecter le déséquilibre des classes et étudier l’information mutuelle.
Distribution des caractéristiques et analyse de la cible est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Pourquoi analyser les caractéristiques par rapport à la cible ?
La cible est la variable que vous souhaitez prédire. Le but de l'EDA pour la modélisation est de découvrir quelles caractéristiques sont réellement liées à cette cible.
Cette leçon aborde les graphiques caractéristique-cible, la mesure de l'informativité avec l'information mutuelle, la détection du déséquilibre des classes et la correction de l'asymétrie avec des transformations.
Caractéristique par rapport à la cible — Cible numérique
Pour une cible numérique, un nuage de points représentant feature par rapport à target montre si la caractéristique contient un signal.
Une tendance nette signifie que la caractéristique est prédictive ; un nuage informe signifie qu'elle ne l'est probablement pas.
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()Caractéristique par rapport à la cible — Cible catégorielle
Lorsque la cible est une étiquette de classe, comparez la distribution de la caractéristique dans chaque classe. Des courbes KDE qui se chevauchent signifient que la caractéristique sépare mal les classes ; des courbes bien distinctes signifient qu'elle est utile.
sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()Comparer les distributions des classes avec des boîtes à moustaches
Les boîtes à moustaches groupées sont une autre manière d'observer les relations entre la caractéristique et la classe : placez la classe cible sur l'axe x et la caractéristique sur l'axe y.
Des médianes différentes entre les classes indiquent que la caractéristique aide à les distinguer.
sns.boxplot(x="churned", y="tenure", data=df)
plt.show()Détecter le déséquilibre des classes
Le déséquilibre des classes se produit lorsqu'une classe cible est largement plus nombreuse qu'une autre (par exemple, 95 % de cas sans fraude et 5 % de cas de fraude). Il induit l'exactitude en erreur et biaise les modèles en faveur de la classe majoritaire.
Vérifiez-le avec un simple comptage des valeurs de la cible.
print(df["churned"].value_counts())
# 0 9200
# 1 800value_counts(normalize=True) pour obtenir des proportions
Les comptages bruts peuvent masquer la gravité du déséquilibre. normalize=True transforme les comptages en proportions, ce qui permet de les lire directement sous forme de pourcentage.
print(df["churned"].value_counts(normalize=True))
# 0 0.92
# 1 0.08 -> only 8% positive classPourquoi le déséquilibre est important
Avec 92 % de valeurs négatives, un modèle qui prédit toujours « non » obtient une exactitude de 92 % tout en étant inutile. C'est pourquoi vous devez surveiller le déséquilibre dès le début.
Les solutions comprennent le rééchantillonnage (suréchantillonnage de la minorité ou sous-échantillonnage de la majorité), les poids de classe ou des métriques comme la précision, le rappel et le score F1 à la place de l'exactitude.
Information mutuelle — Mesurer l'informativité
L'information mutuelle mesure dans quelle mesure le fait de connaître une caractéristique réduit l'incertitude concernant la cible. Contrairement à la corrélation, elle prend également en compte les relations non linéaires.
Pour les cibles de classification, scikit-learn fournit mutual_info_classif.
from sklearn.feature_selection import mutual_info_classif
X = df[["balance", "tenure", "rooms"]]
y = df["churned"]
mi = mutual_info_classif(X, y, random_state=42)
print(dict(zip(X.columns, mi)))Classer les caractéristiques selon l'information mutuelle
Placer les scores MI dans une Series triée fournit rapidement un classement de l'importance des caractéristiques. Une MI plus élevée signifie que la caractéristique est plus informative sur la cible.
C'est un excellent filtre préliminaire avant l'entraînement d'un modèle.
import pandas as pd
from sklearn.feature_selection import mutual_info_classif
mi = mutual_info_classif(X, y, random_state=42)
scores = pd.Series(mi, index=X.columns).sort_values(ascending=False)
print(scores)Transformation logarithmique des caractéristiques asymétriques
Les caractéristiques asymétriques à droite (revenus, comptages, prix) se comportent souvent mieux après une transformation logarithmique, qui comprime la longue traîne pour obtenir une forme plus symétrique.
Utilisez np.log1p (logarithme de 1 + x) afin de gérer les zéros en toute sécurité.
import numpy as np
df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())Avant et après : visualiser la transformation
Vérifiez toujours qu'une transformation a été utile en traçant les données avant et après. La version logarithmique devrait se rapprocher davantage d'une courbe en cloche symétrique.
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2)
df["income"].hist(ax=ax[0]); ax[0].set_title("Raw")
np.log1p(df["income"]).hist(ax=ax[1]); ax[1].set_title("log1p")
plt.show()Vérification rapide : corriger une caractéristique asymétrique
Une caractéristique est fortement asymétrique à droite et contient quelques valeurs nulles.
Récapitulatif : analyser les caractéristiques et la cible
Vous avez appris à relier les caractéristiques à la cible de prédiction :
- Nuages de points, KDE et boîtes à moustaches pour observer le signal entre caractéristique et cible
value_counts(normalize=True)pour détecter et quantifier le déséquilibre des classesmutual_info_classifpour classer les caractéristiques selon leur informativité, y compris les relations non linéairesnp.log1ppour atténuer l'asymétrie à droite des caractéristiques
Vous avez terminé l'analyse exploratoire des données. Ensuite : collecter des données à partir d'API web.
Questions Fréquemment Posées
La leçon « Distribution des caractéristiques et analyse de la cible » est-elle gratuite ?
Oui — le texte complet de « Distribution des caractéristiques et analyse de la cible » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Distribution des caractéristiques et analyse de la cible » ?
Analyser les relations entre caractéristiques et cible, détecter le déséquilibre des classes et étudier l’information mutuelle. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Distribution des caractéristiques et analyse de la cible » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Flux de travail EDA et profilage des données
- Analyse univariée
- Analyse bivariée et multivariée
- Distribution des caractéristiques et analyse de la cible