Ordinalencoder
Swipe um das Menü anzuzeigen
Das nächste zu behandelnde Thema sind kategoriale Daten. Es gibt zwei Haupttypen von kategorialen Variablen.
Ordinale Daten besitzen eine natürliche Reihenfolge, während nominale Daten keine Reihenfolge aufweisen. Aufgrund dieser Reihenfolge können Kategorien entsprechend ihrer Rangfolge als Zahlen codiert werden.
Beispielsweise kann eine 'rate'-Spalte mit den Werten 'Terrible', 'Bad', 'OK', 'Good' und 'Great' wie folgt codiert werden:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Zur Codierung von ordinalen Daten wird der OrdinalEncoder verwendet. Er wandelt Kategorien in Ganzzahlen ab 0 um.
OrdinalEncoder wird auf die gleiche Weise wie andere Transformer angewendet. Die Hauptschwierigkeit besteht darin, das Argument categories korrekt anzugeben.
Beispielsweise enthält ein Datensatz (nicht der penguins-Datensatz) eine Spalte 'education'. Der erste Schritt ist, die eindeutigen Werte dieser Spalte zu überprüfen.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Eine geordnete Liste kategorialer Werte muss erstellt werden, die von 'HS-grad' bis 'Doctorate' reicht.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Beim Transformieren mehrerer Merkmale mit OrdinalEncoder müssen die Kategorien für jede Spalte explizit angegeben werden. Dies erfolgt über das Argument categories:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Welche Aussage beschreibt die Verwendung des OrdinalEncoder zur Verarbeitung kategorialer Daten in einem Datensatz am besten?
2. Angenommen, Sie haben eine kategoriale Spalte mit dem Namen 'Color'. Wäre es angemessen, den OrdinalEncoder zu verwenden, um deren Werte zu kodieren?
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