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

Pandas DataFrame の複数の列を効率的にラベル エンコードするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-21 22:52:13995ブラウズ

How to Efficiently Label Encode Multiple Columns in a Pandas DataFrame?

Scikit-Learn の複数の列にわたるラベル エンコーディング

DataFrame でカテゴリ データの複数の列を扱う場合、面倒な作業になる可能性があります。列ごとに個別の LabelEncoder オブジェクトを作成するのは非効率的です。この問題は、文字列ベースのカテゴリ データの多数の列を含むデータセットを操作するときによく発生します。

問題の説明:

単一の LabelEncoder オブジェクトを DataFrame 全体に適用しようとしています提供されたコード スニペットに示されているように、エラーが発生します。エラー メッセージ「不正な入力形状 (6, 3)」は、LabelEncoder が複数の列を持つ DataFrame ではなく、値の 1D 配列を期待していることを示しています。

解決策:

この問題を解決するには、pandas の apply() メソッドを利用することをお勧めします。このエレガントな解決策には、LabelEncoder の fit_transform() を適用することが含まれます。

df.apply(LabelEncoder().fit_transform)

このアプローチは、各列を反復処理し、LabelEncoder 変換を適用し、エンコードされた値を含む新しい DataFrame を返します。

追加の考慮事項:

  • 逆変換: エンコードされた値を元のカテゴリーにデコードするには、エンコードされた DataFrame で inverse_transform() メソッドを使用します。
  • 複数のエンコーダー: 異なる LabelEncoder パラメーターが必要な場合は、列の場合は、拡張セクションに示すように、エンコーダを格納するために辞書を使用することを検討してください。答え。
  • 列の選択: すべての列でラベル エンコードが必要なわけではないシナリオでは、列のサブセットを変換できるようにする ColumnTransformer を使用します。

推奨される代替案:

Scikit-Learn バージョンの場合0.20 以降では、文字列データの LabelEncoder のより効率的な代替手段として OneHotEncoder が推奨されます。ワンホット エンコーディングを直接サポートします。これは、多くの場合、機械学習モデルのカテゴリ データに好まれる表現です。

OneHotEncoder().fit_transform(df)

これらの手法を活用することで、実務者は文字列ベースのカテゴリ データの複数の列のラベル エンコーディングを効率的に処理できます。データを収集し、機械学習分析用のデータセットの準備を容易にします。

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

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