Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Imputazione dei Valori Mancanti | Preprocessing Dei Dati con Scikit-Learn
Introduzione al ML con Scikit-Learn

bookSfida: Imputazione dei Valori Mancanti

La classe SimpleImputer è progettata per gestire i dati mancanti sostituendo automaticamente i valori assenti.

from sklearn.impute import SimpleImputer
imputer = SimpleImputer()

All'inizializzazione, può essere personalizzata impostando i suoi parametri:

  • missing_value: specifica il segnaposto per i valori mancanti. Per impostazione predefinita, è np.nan;
  • strategy: la strategia utilizzata per imputare i valori mancanti. Il valore predefinito è 'mean';
  • fill_value: specifica il valore da utilizzare per riempire i valori mancanti quando la strategy è 'constant'. Il valore predefinito è None.

Essendo un trasformatore, dispone dei seguenti metodi:

È inoltre necessario decidere quali valori utilizzare per l'imputazione.

Un approccio comune consiste nel sostituire i valori numerici mancanti con la media e i valori categorici mancanti con la moda (valore più frequente), poiché ciò altera minimamente la distribuzione dei dati.

La scelta è controllata dal parametro strategy:

  • strategy='mean': imputazione con la media di ciascuna colonna;
  • strategy='median': imputazione con la mediana di ciascuna colonna;
  • strategy='most_frequent': imputazione con la moda di ciascuna colonna;
  • strategy='constant': imputazione con un valore costante specificato nel parametro fill_value.

Il parametro missing_values definisce quali valori sono trattati come mancanti. Per impostazione predefinita, è NaN, ma in alcuni dataset può essere una stringa vuota '' o un altro segnaposto.

Note
Nota

SimpleImputer e molti altri trasformatori funzionano solo con DataFrame, non con pandas Series. Selezionare una singola colonna da un DataFrame usando df['column'] restituisce una Series. Per evitare ciò, è possibile utilizzare le doppie parentesi quadre df[['column']] per assicurarsi che venga restituito un DataFrame:

imputer.fit_transform(df[['column']])

Quando si applica il metodo .fit_transform() di SimpleImputer, viene restituito un array 2D. L'assegnazione di valori a una singola colonna in un DataFrame pandas richiede un array 1D (o una Series).

df['column'] = ...  # Requires 1D array or Series
imputer.fit_transform(df[['column']])  # Produces 2D array

Il metodo .ravel() può essere utilizzato per appiattire l'array in 1D prima dell'assegnazione:

df['column'] = imputer.fit_transform(df[['column']]).ravel()

Questo garantisce che i valori imputati siano correttamente formattati e memorizzati nella colonna del DataFrame.

Compito

Swipe to start coding

Viene fornito un DataFrame denominato df che contiene informazioni sui pinguini. La colonna 'sex' presenta alcuni valori mancanti (NaN). L'obiettivo è colmare queste lacune utilizzando la categoria più comune presente in questa colonna.

  1. Importazione della classe SimpleImputer da sklearn.impute.
  2. Creazione di un oggetto SimpleImputer con il parametro strategy impostato su 'most_frequent'.
  3. Applicazione dell'imputer alla colonna 'sex' per sostituire tutti i valori mancanti.
  4. Aggiornamento della colonna 'sex' nel DataFrame df con i dati imputati.

Soluzione

Ottimo! Abbiamo gestito il problema dei valori mancanti nel nostro dataset. Abbiamo rimosso le righe con più di un valore nullo e imputato la colonna 'sex' con il valore più frequente – MALE.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain how to use SimpleImputer for categorical columns?

What are some best practices for choosing the right imputation strategy?

How do I handle missing values that are not NaN, like empty strings?

close

Awesome!

Completion rate improved to 3.13

bookSfida: Imputazione dei Valori Mancanti

Scorri per mostrare il menu

La classe SimpleImputer è progettata per gestire i dati mancanti sostituendo automaticamente i valori assenti.

from sklearn.impute import SimpleImputer
imputer = SimpleImputer()

All'inizializzazione, può essere personalizzata impostando i suoi parametri:

  • missing_value: specifica il segnaposto per i valori mancanti. Per impostazione predefinita, è np.nan;
  • strategy: la strategia utilizzata per imputare i valori mancanti. Il valore predefinito è 'mean';
  • fill_value: specifica il valore da utilizzare per riempire i valori mancanti quando la strategy è 'constant'. Il valore predefinito è None.

Essendo un trasformatore, dispone dei seguenti metodi:

È inoltre necessario decidere quali valori utilizzare per l'imputazione.

Un approccio comune consiste nel sostituire i valori numerici mancanti con la media e i valori categorici mancanti con la moda (valore più frequente), poiché ciò altera minimamente la distribuzione dei dati.

La scelta è controllata dal parametro strategy:

  • strategy='mean': imputazione con la media di ciascuna colonna;
  • strategy='median': imputazione con la mediana di ciascuna colonna;
  • strategy='most_frequent': imputazione con la moda di ciascuna colonna;
  • strategy='constant': imputazione con un valore costante specificato nel parametro fill_value.

Il parametro missing_values definisce quali valori sono trattati come mancanti. Per impostazione predefinita, è NaN, ma in alcuni dataset può essere una stringa vuota '' o un altro segnaposto.

Note
Nota

SimpleImputer e molti altri trasformatori funzionano solo con DataFrame, non con pandas Series. Selezionare una singola colonna da un DataFrame usando df['column'] restituisce una Series. Per evitare ciò, è possibile utilizzare le doppie parentesi quadre df[['column']] per assicurarsi che venga restituito un DataFrame:

imputer.fit_transform(df[['column']])

Quando si applica il metodo .fit_transform() di SimpleImputer, viene restituito un array 2D. L'assegnazione di valori a una singola colonna in un DataFrame pandas richiede un array 1D (o una Series).

df['column'] = ...  # Requires 1D array or Series
imputer.fit_transform(df[['column']])  # Produces 2D array

Il metodo .ravel() può essere utilizzato per appiattire l'array in 1D prima dell'assegnazione:

df['column'] = imputer.fit_transform(df[['column']]).ravel()

Questo garantisce che i valori imputati siano correttamente formattati e memorizzati nella colonna del DataFrame.

Compito

Swipe to start coding

Viene fornito un DataFrame denominato df che contiene informazioni sui pinguini. La colonna 'sex' presenta alcuni valori mancanti (NaN). L'obiettivo è colmare queste lacune utilizzando la categoria più comune presente in questa colonna.

  1. Importazione della classe SimpleImputer da sklearn.impute.
  2. Creazione di un oggetto SimpleImputer con il parametro strategy impostato su 'most_frequent'.
  3. Applicazione dell'imputer alla colonna 'sex' per sostituire tutti i valori mancanti.
  4. Aggiornamento della colonna 'sex' nel DataFrame df con i dati imputati.

Soluzione

Ottimo! Abbiamo gestito il problema dei valori mancanti nel nostro dataset. Abbiamo rimosso le righe con più di un valore nullo e imputato la colonna 'sex' con il valore più frequente – MALE.

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
single

single

some-alt