0Pricing
Learn AI with Python · Lezione

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     800

value_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 class

Perché 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 classi
  • mutual_info_classif per ordinare le feature in base all'informatività, incluse le relazioni non lineari
  • np.log1p per 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

  1. Workflow EDA e profilazione dei dati
  2. Analisi univariata
  3. Analisi bivariata e multivariata
  4. Distribuzione delle feature e analisi del target
← Torna a Learn AI with Python