Distribuzione delle feature e analisi del target
Analisi delle relazioni tra feature e target, rilevamento dello sbilanciamento tra classi e informazione mutua.
Distribuzione delle feature e analisi del target è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Perché analizzare le feature rispetto al target?
Il target è la variabile che si desidera prevedere. Lo scopo dell'EDA per la modellazione è capire quali feature sono effettivamente correlate con il target.
Questa lezione tratta i grafici feature-target, la misurazione dell'informatività con l'informazione mutua, il rilevamento dello sbilanciamento delle classi e la correzione dell'asimmetria tramite trasformazioni.
Feature e target — target numerico
Con un target numerico, un grafico a dispersione di feature rispetto a target mostra se la feature contiene un segnale utile.
Una tendenza chiara indica che la feature è predittiva; una nuvola informe indica probabilmente il contrario.
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()Feature e target — target categoriale
Quando il target è un'etichetta di classe, confronti la distribuzione della feature all'interno di ogni classe. Le KDE sovrapposte indicano che la feature separa male le classi; curve ben distinte indicano che è utile.
sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()Confrontare le distribuzioni delle classi con i box plot
I box plot raggruppati sono un altro modo per osservare le relazioni tra feature e classe: metta la classe target sull'asse x e la feature sull'asse y.
Mediane diverse tra le classi indicano che la feature aiuta a distinguerle.
sns.boxplot(x="churned", y="tenure", data=df)
plt.show()Rilevare lo sbilanciamento delle classi
Lo sbilanciamento delle classi si verifica quando una classe del target è di gran lunga più numerosa di un'altra, ad esempio 95% di casi senza frode e 5% di casi fraudolenti. Questo rende l'accuratezza fuorviante e introduce un bias nei modelli a favore della classe maggioritaria.
Lo verifichi contando semplicemente i valori del target.
print(df["churned"].value_counts())
# 0 9200
# 1 800value_counts(normalize=True) per ottenere le proporzioni
I conteggi grezzi possono nascondere la gravità dello sbilanciamento. normalize=True trasforma i conteggi in proporzioni, consentendo di leggerli direttamente come percentuali.
print(df["churned"].value_counts(normalize=True))
# 0 0.92
# 1 0.08 -> only 8% positive classPerché lo sbilanciamento è importante
Con il 92% di casi negativi, un modello che prevede sempre "no" raggiunge il 92% di accuratezza pur essendo inutile. Per questo è importante controllare presto lo sbilanciamento.
Tra i rimedi ci sono il ricampionamento (sovracampionare la classe minoritaria o sottocampionare quella maggioritaria), i pesi delle classi oppure metriche come precisione, richiamo e F1 al posto dell'accuratezza.
Informazione mutua — misurare l'informatività
L'informazione mutua misura quanto la conoscenza di una feature riduca l'incertezza sul target. A differenza della correlazione, rileva anche le relazioni non lineari.
Per i target di classificazione, scikit-learn mette a disposizione 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)))Ordinare le feature in base all'informazione mutua
Inserire i punteggi MI in una Series ordinata offre rapidamente una classifica dell'importanza delle feature. Un MI più alto indica che la feature è più informativa rispetto al target.
È un ottimo filtro iniziale prima di addestrare qualsiasi modello.
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)Trasformazione logaritmica per feature asimmetriche
Le feature con asimmetria a destra, come redditi, conteggi e prezzi, spesso si comportano meglio dopo una trasformazione logaritmica, che comprime la coda lunga verso una forma più simmetrica.
Utilizzi np.log1p (il logaritmo di 1 + x) per gestire correttamente anche gli zeri.
import numpy as np
df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())Prima e dopo: visualizzare la trasformazione
Verifichi sempre che una trasformazione sia stata utile tracciando un grafico prima e dopo. La versione logaritmica dovrebbe avere una forma più simile a una curva a campana simmetrica.
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()Controllo rapido: correggere una feature asimmetrica
Una feature presenta una forte asimmetria a destra e contiene alcuni valori pari a zero.
Riepilogo: analisi di feature e target
Ha imparato a collegare le feature al target della previsione:
- grafici a dispersione, KDE e box plot per osservare il segnale tra feature e target
value_counts(normalize=True)per rilevare e quantificare lo sbilanciamento delle classimutual_info_classifper ordinare le feature in base all'informatività, incluse le relazioni non linearinp.log1pper ridurre l'asimmetria a destra delle feature
Ha completato l'Analisi esplorativa dei dati. Prossimo argomento: raccogliere dati dalle API web.
Domande Frequenti
La lezione «Distribuzione delle feature e analisi del target» è gratuita?
Sì — il testo completo di «Distribuzione delle feature e analisi del target» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Distribuzione delle feature e analisi del target»?
Analisi delle relazioni tra feature e target, rilevamento dello sbilanciamento tra classi e informazione mutua. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Distribuzione delle feature e analisi del target»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Workflow EDA e profilazione dei dati
- Analisi univariata
- Analisi bivariata e multivariata
- Distribuzione delle feature e analisi del target