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 leggermente più complessa.

Per 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 ciascun valore unico. Poi, per ogni riga, assegna 1 alla colonna corrispondente al valore di quella riga e 0 alle altre colonne.

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

Applicare OneHotEncoder al dataset penguins. Le caratteristiche nominali sono 'island' e 'sex'. La colonna 'species' rappresenta il target e verrà trattata separatamente nella prossima lezione dedicata al target encoding.

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 leggermente più complessa.

Per 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 ciascun valore unico. Poi, per ogni riga, assegna 1 alla colonna corrispondente al valore di quella riga e 0 alle altre colonne.

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

Applicare OneHotEncoder al dataset penguins. Le caratteristiche nominali sono 'island' e 'sex'. La colonna 'species' rappresenta il target e verrà trattata separatamente nella prossima lezione dedicata al target encoding.

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