One-Hot-Encoder
Bei nominalen Werten ist die Verarbeitung etwas komplexer.
Für ordinale Daten, wie beispielsweise Nutzerbewertungen von 'Terrible' bis 'Great', ist eine Kodierung als Zahlen von 0 bis 4 angemessen, da das Modell so die zugrunde liegende Reihenfolge erfassen kann.
Im Gegensatz dazu würde bei einem Merkmal wie 'city'
mit fünf verschiedenen Kategorien eine Kodierung als Zahlen von 0 bis 4 fälschlicherweise eine Reihenfolge suggerieren. In diesem Fall ist das One-Hot-Encoding die bessere Wahl, da es die Kategorien ohne Hierarchie abbildet.
Um nominale Daten zu kodieren, wird der OneHotEncoder
-Transformer verwendet. Er erstellt für jeden eindeutigen Wert eine eigene Spalte. Für jede Zeile wird dann in der Spalte des jeweiligen Wertes eine 1 gesetzt und in allen anderen Spalten eine 0.
Was ursprünglich 'NewYork'
war, hat jetzt 1 in der Spalte 'City_NewYork'
und 0 in den anderen City_
-Spalten.
Anwendung von OneHotEncoder
auf den penguins-Datensatz. Die nominalen Merkmale sind 'island'
und 'sex'
. Die Spalte 'species'
ist das Ziel und wird separat behandelt, wenn im nächsten Kapitel die Target-Encoding besprochen wird.
123456import 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())
Um den OneHotEncoder
anzuwenden, das Encoder-Objekt initialisieren und die ausgewählten Spalten an .fit_transform()
übergeben, analog zu anderen Transformern.
1234567891011import 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())
Die Methode .toarray()
wandelt die Sparse-Matrix-Ausgabe des OneHotEncoder
in ein dichtes NumPy-Array um. Dichte Arrays zeigen alle Werte explizit an, was die Visualisierung und Bearbeitung der kodierten Daten innerhalb eines DataFrames erleichtert. Sparse-Matrizen speichern nur Nicht-Null-Elemente und optimieren so die Speichernutzung. Diese Methode kann weggelassen werden, um den Unterschied in der Ausgabe zu sehen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.13
One-Hot-Encoder
Swipe um das Menü anzuzeigen
Bei nominalen Werten ist die Verarbeitung etwas komplexer.
Für ordinale Daten, wie beispielsweise Nutzerbewertungen von 'Terrible' bis 'Great', ist eine Kodierung als Zahlen von 0 bis 4 angemessen, da das Modell so die zugrunde liegende Reihenfolge erfassen kann.
Im Gegensatz dazu würde bei einem Merkmal wie 'city'
mit fünf verschiedenen Kategorien eine Kodierung als Zahlen von 0 bis 4 fälschlicherweise eine Reihenfolge suggerieren. In diesem Fall ist das One-Hot-Encoding die bessere Wahl, da es die Kategorien ohne Hierarchie abbildet.
Um nominale Daten zu kodieren, wird der OneHotEncoder
-Transformer verwendet. Er erstellt für jeden eindeutigen Wert eine eigene Spalte. Für jede Zeile wird dann in der Spalte des jeweiligen Wertes eine 1 gesetzt und in allen anderen Spalten eine 0.
Was ursprünglich 'NewYork'
war, hat jetzt 1 in der Spalte 'City_NewYork'
und 0 in den anderen City_
-Spalten.
Anwendung von OneHotEncoder
auf den penguins-Datensatz. Die nominalen Merkmale sind 'island'
und 'sex'
. Die Spalte 'species'
ist das Ziel und wird separat behandelt, wenn im nächsten Kapitel die Target-Encoding besprochen wird.
123456import 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())
Um den OneHotEncoder
anzuwenden, das Encoder-Objekt initialisieren und die ausgewählten Spalten an .fit_transform()
übergeben, analog zu anderen Transformern.
1234567891011import 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())
Die Methode .toarray()
wandelt die Sparse-Matrix-Ausgabe des OneHotEncoder
in ein dichtes NumPy-Array um. Dichte Arrays zeigen alle Werte explizit an, was die Visualisierung und Bearbeitung der kodierten Daten innerhalb eines DataFrames erleichtert. Sparse-Matrizen speichern nur Nicht-Null-Elemente und optimieren so die Speichernutzung. Diese Methode kann weggelassen werden, um den Unterschied in der Ausgabe zu sehen.
Danke für Ihr Feedback!