Beschriftung mehrerer DataFrame-Spalten mit Scikit-Learn
Bei der Arbeit mit Zeichenfolgenbeschriftungen in einem Pandas-DataFrame ist es häufig erforderlich, diese zu codieren Ganzzahlen für die Kompatibilität mit Algorithmen für maschinelles Lernen. Der LabelEncoder von Scikit-learn ist ein praktisches Werkzeug für diese Aufgabe, aber die Verwendung mehrerer LabelEncoder-Objekte für jede Spalte kann mühsam sein.
Um dies zu umgehen, können Sie den folgenden Ansatz nutzen:
df.apply(LabelEncoder().fit_transform)
Dadurch wird ein LabelEncoder auf jede Spalte im DataFrame angewendet, wodurch alle Zeichenfolgenbeschriftungen effektiv in Ganzzahlen kodiert werden.
Verbessert Codierung mit OneHotEncoder
In neueren Versionen von Scikit-Learn (0.20 und höher) wird die Klasse OneHotEncoder() für die Eingabe von Label-Codierungszeichenfolgen empfohlen:
OneHotEncoder().fit_transform(df)
OneHotEncoder bietet effiziente One-Hot-Kodierung, die häufig für kategorische Anwendungen erforderlich ist Daten.
Inverse- und Transformationsoperationen
Um codierte Etiketten umzukehren oder zu transformieren, können Sie die folgenden Techniken verwenden:
from collections import defaultdict d = defaultdict(LabelEncoder) # Encoding fit = df.apply(lambda x: d[x.name].fit_transform(x)) # Inverse transform fit.apply(lambda x: d[x.name].inverse_transform(x)) # Transform future data df.apply(lambda x: d[x.name].transform(x))
from sklearn.preprocessing import ColumnTransformer, OneHotEncoder # Select specific columns for encoding encoder = OneHotEncoder() transformer = ColumnTransformer(transformers=[('ohe', encoder, ['col1', 'col2', 'col3'])]) # Transform the DataFrame encoded_df = transformer.fit_transform(df)
from neuraxle.preprocessing import FlattenForEach # Flatten all columns and apply LabelEncoder encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
Abhängig von Ihren spezifischen Anforderungen können Sie die am besten geeignete Methode für die Beschriftung auswählen Kodierung mehrerer Spalten in Scikit-Learn.
Das obige ist der detaillierte Inhalt vonWie kodiere ich effizient mehrere DataFrame-Spalten mit Scikit-Learn?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!