Heim > Backend-Entwicklung > Python-Tutorial > Wie kodiere ich effizient mehrere DataFrame-Spalten mit Scikit-Learn?

Wie kodiere ich effizient mehrere DataFrame-Spalten mit Scikit-Learn?

Barbara Streisand
Freigeben: 2024-11-25 10:23:11
Original
314 Leute haben es durchsucht

How to Efficiently Encode Multiple DataFrame Columns with Scikit-Learn?

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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:

  1. Behalten Sie a Wörterbuch der LabelEncoder:
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))
Nach dem Login kopieren
  1. Verwenden Sie ColumnTransformer für Spezifische Spalten:
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)
Nach dem Login kopieren
  1. Verwenden Sie FlattenForEach von Neuraxle:
from neuraxle.preprocessing import FlattenForEach

# Flatten all columns and apply LabelEncoder
encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage