ホームページ >バックエンド開発 >Python チュートリアル >Scikit-Learn を使用して複数の DataFrame 列を効率的にエンコードするにはどうすればよいですか?
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 は効率的な機能を提供しますカテゴリカル データに必要となることが多いワンホット エンコーディング。
逆変換および変換操作
逆変換またはエンコードされたラベルを変換するには、次の手法を使用できます。
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)
具体的な内容に応じて要件に応じて、Scikit-Learn の複数の列のラベル エンコードに最適な方法を選択できます。
以上がScikit-Learn を使用して複数の DataFrame 列を効率的にエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。