ホームページ >バックエンド開発 >Python チュートリアル >Scikit-Learn を使用して複数の DataFrame 列を効率的にエンコードするにはどうすればよいですか?

Scikit-Learn を使用して複数の DataFrame 列を効率的にエンコードするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-25 10:23:11270ブラウズ

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

Scikit-Learn を使用した複数の DataFrame 列のラベル エンコーディング

pandas DataFrame で文字列ラベルを操作する場合、多くの場合、文字列ラベルを次のようにエンコードする必要があります。機械学習アルゴリズムとの互換性のための整数。 Scikit-learn の LabelEncoder はこのタスクには便利なツールですが、列ごとに複数の LabelEncoder オブジェクトを使用するのは面倒な場合があります。

これを回避するには、次のアプローチを利用できます:

df.apply(LabelEncoder().fit_transform)

これにより、DataFrame の各列に LabelEncoder が適用され、すべての文字列ラベルが効果的にエンコードされます。 integers.

OneHotEncoder による拡張エンコーディング

Scikit-Learn のより新しいバージョン (0.20 以降) では、ラベル エンコーディング文字列入力には OneHotEncoder() クラスが推奨されます。 :

OneHotEncoder().fit_transform(df)

OneHotEncoder は効率的な機能を提供しますカテゴリカル データに必要となることが多いワンホット エンコーディング。

逆変換および変換操作

逆変換またはエンコードされたラベルを変換するには、次の手法を使用できます。

  1. の辞書を維持しますLabelEncoders:
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))
  1. 特定の列に ColumnTransformer を使用します:
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)
  1. Neuraxle の FlattenForEach ステップを使用します:
from neuraxle.preprocessing import FlattenForEach

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

具体的な内容に応じて要件に応じて、Scikit-Learn の複数の列のラベル エンコードに最適な方法を選択できます。

以上がScikit-Learn を使用して複数の DataFrame 列を効率的にエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。