Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara One-Hot Encoder | Preprocessing Dei Dati con Scikit-learn
Introduzione al ML con Scikit-Learn

bookOne-Hot Encoder

Quando si tratta di valori nominali, la loro gestione risulta un po' più complessa.

Per i dati ordinali, come le valutazioni degli utenti che vanno da 'Terribile' a 'Ottimo', codificarli come numeri da 0 a 4 è appropriato perché il modello può cogliere l'ordine intrinseco.

Al contrario, per una caratteristica come 'city' con cinque categorie distinte, codificarle come numeri da 0 a 4 suggerirebbe erroneamente un ordine. In questo caso, la one-hot encoding è una scelta migliore, poiché rappresenta le categorie senza implicare una gerarchia.

Per codificare i dati nominali, si utilizza il trasformatore OneHotEncoder. Esso crea una colonna per ogni valore unico. Poi, per ogni riga, imposta 1 nella colonna corrispondente al valore di quella riga e 0 nelle altre colonne.

Quello che originariamente era 'NewYork' ora ha 1 nella colonna 'City_NewYork' e 0 nelle altre colonne City_.

Applica OneHotEncoder al dataset penguins. Le caratteristiche nominali sono 'island' e 'sex'. La colonna 'species' è il target e verrà trattata separatamente quando si discuterà della codifica del target nel prossimo capitolo.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Per applicare OneHotEncoder, inizializzare l'oggetto encoder e passare le colonne selezionate a .fit_transform(), nello stesso modo degli altri trasformatori.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Nota

Il metodo .toarray() converte la matrice sparsa restituita da OneHotEncoder in un array NumPy denso. Gli array densi mostrano esplicitamente tutti i valori, facilitando la visualizzazione e la manipolazione dei dati codificati all'interno di un DataFrame. Le matrici sparse memorizzano solo gli elementi diversi da zero, ottimizzando l'uso della memoria. È possibile omettere questo metodo per vedere la differenza nell'output.

question mark

OneHotEncoder crea nuove colonne. È corretto?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

Awesome!

Completion rate improved to 3.13

bookOne-Hot Encoder

Scorri per mostrare il menu

Quando si tratta di valori nominali, la loro gestione risulta un po' più complessa.

Per i dati ordinali, come le valutazioni degli utenti che vanno da 'Terribile' a 'Ottimo', codificarli come numeri da 0 a 4 è appropriato perché il modello può cogliere l'ordine intrinseco.

Al contrario, per una caratteristica come 'city' con cinque categorie distinte, codificarle come numeri da 0 a 4 suggerirebbe erroneamente un ordine. In questo caso, la one-hot encoding è una scelta migliore, poiché rappresenta le categorie senza implicare una gerarchia.

Per codificare i dati nominali, si utilizza il trasformatore OneHotEncoder. Esso crea una colonna per ogni valore unico. Poi, per ogni riga, imposta 1 nella colonna corrispondente al valore di quella riga e 0 nelle altre colonne.

Quello che originariamente era 'NewYork' ora ha 1 nella colonna 'City_NewYork' e 0 nelle altre colonne City_.

Applica OneHotEncoder al dataset penguins. Le caratteristiche nominali sono 'island' e 'sex'. La colonna 'species' è il target e verrà trattata separatamente quando si discuterà della codifica del target nel prossimo capitolo.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Per applicare OneHotEncoder, inizializzare l'oggetto encoder e passare le colonne selezionate a .fit_transform(), nello stesso modo degli altri trasformatori.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Nota

Il metodo .toarray() converte la matrice sparsa restituita da OneHotEncoder in un array NumPy denso. Gli array densi mostrano esplicitamente tutti i valori, facilitando la visualizzazione e la manipolazione dei dati codificati all'interno di un DataFrame. Le matrici sparse memorizzano solo gli elementi diversi da zero, ottimizzando l'uso della memoria. È possibile omettere questo metodo per vedere la differenza nell'output.

question mark

OneHotEncoder crea nuove colonne. È corretto?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6
some-alt