One-Hot-Encoder
Bei nominalen Werten gestaltet sich 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 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.
Zur Kodierung von nominalen Daten wird der OneHotEncoder-Transformer verwendet. Für jeden eindeutigen Wert wird eine eigene Spalte erstellt. 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 nun 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() konvertiert die Sparse-Matrix-Ausgabe des OneHotEncoder in ein dichtes NumPy-Array. 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
Großartig!
Completion Rate verbessert auf 3.13
One-Hot-Encoder
Swipe um das Menü anzuzeigen
Bei nominalen Werten gestaltet sich 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 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.
Zur Kodierung von nominalen Daten wird der OneHotEncoder-Transformer verwendet. Für jeden eindeutigen Wert wird eine eigene Spalte erstellt. 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 nun 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() konvertiert die Sparse-Matrix-Ausgabe des OneHotEncoder in ein dichtes NumPy-Array. 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!