Scikit-Learn の複数列にわたるラベル エンコーディング
カテゴリ データの複数の列を含むデータセットを扱う場合、これらをエンコードする必要があります。機械学習アルゴリズムで使用するために数値的にラベルを付けます。 Scikit-learn は、この目的のために LabelEncoder クラスを提供します。ただし、多数の列 (例: 50) を持つ DataFrame に直接適用すると、入力形状が正しくないためエラーが発生する可能性があります。
この課題を克服するには、すべての列でラベル エンコーディングを同時に実行するエレガントな方法が必要です。
df.apply(LabelEncoder().fit_transform)
代わりに、特に scikit-learn バージョン 0.20 以降の場合は、OneHotEncoder の使用を検討してください:
OneHotEncoder().fit_transform(df)
OneHotEncoder は文字列入力をネイティブにサポートし、ワンホット エンコードされたベクトルを生成します.
別の方法として、さまざまな列の LabelEncoder インスタンスを制御する必要がある場合、または列のサブセットのみをエンコードする必要がある場合は、ColumnTransformer を使用できます。
from sklearn.compose import ColumnTransformer from sklearn.preprocessing import LabelEncoder transformer = ColumnTransformer( transformers=[('labels', LabelEncoder(), ['column1', 'column2'])], ) transformed_data = transformer.fit_transform(df)
ColumnTransformer を使用すると、次のことができます。エンコードする列を指定し、個別の LabelEncoder インスタンスを維持することで、データ準備の柔軟性が向上します。
以上がScikit-Learn で複数の列にわたってラベル エンコーディングを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。