Scikit-Learn の複数の列にわたるラベル エンコーディング
DataFrame でカテゴリ データの複数の列を扱う場合、面倒な作業になる可能性があります。列ごとに個別の LabelEncoder オブジェクトを作成するのは非効率的です。この問題は、文字列ベースのカテゴリ データの多数の列を含むデータセットを操作するときによく発生します。
問題の説明:
単一の LabelEncoder オブジェクトを DataFrame 全体に適用しようとしています提供されたコード スニペットに示されているように、エラーが発生します。エラー メッセージ「不正な入力形状 (6, 3)」は、LabelEncoder が複数の列を持つ DataFrame ではなく、値の 1D 配列を期待していることを示しています。
解決策:
この問題を解決するには、pandas の apply() メソッドを利用することをお勧めします。このエレガントな解決策には、LabelEncoder の fit_transform() を適用することが含まれます。
df.apply(LabelEncoder().fit_transform)
このアプローチは、各列を反復処理し、LabelEncoder 変換を適用し、エンコードされた値を含む新しい DataFrame を返します。
追加の考慮事項:
推奨される代替案:
Scikit-Learn バージョンの場合0.20 以降では、文字列データの LabelEncoder のより効率的な代替手段として OneHotEncoder が推奨されます。ワンホット エンコーディングを直接サポートします。これは、多くの場合、機械学習モデルのカテゴリ データに好まれる表現です。
OneHotEncoder().fit_transform(df)
これらの手法を活用することで、実務者は文字列ベースのカテゴリ データの複数の列のラベル エンコーディングを効率的に処理できます。データを収集し、機械学習分析用のデータセットの準備を容易にします。
以上がPandas DataFrame の複数の列を効率的にラベル エンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。