「Pandas:データをワンホットエンコードする方法」
Pandas How to One-Hot Encode Data
ワンホットエンコーディングとは
ワンホットエンコーディングは、カテゴリカルな値を数値形式に変換するためのデータ前処理の手法です。
- 「データサイエンティスト vs データアナリスト vs データエンジニアー – 違いを解明する」
- Salesforce AIとコロンビア大学の研究者が、DialogStudioを導入しましたこれは、80の対話データセットの統一された多様なコレクションであり、元の情報を保持しています
- 2023年の機械学習研究におけるトップのデータバージョン管理ツール
categorical_column | bool_col | col_1 | col_2 | label |
value_A | True | 9 | 4 | 0 |
value_B | False | 7 | 2 | 0 |
value_D | True | 9 | 5 | 0 |
value_D | False | 8 | 3 | 1 |
value_D | False | 9 | 0 | 1 |
value_D | False | 5 | 4 | 1 |
value_B | True | 8 | 1 | 1 |
value_D | True | 6 | 6 | 1 |
value_C | True | 0 | 5 | 0 |
このダミーデータでは、カテゴリカルな列には複数の文字列値があります。多くの機械学習アルゴリズムでは、入力データが数値形式であることが必要です。そのため、このデータ属性をそのようなアルゴリズムと互換性のある形式に変換する方法が必要です。したがって、カテゴリカルな列を複数のバイナリ値列に分割します。
Pandasライブラリを使用したワンホットエンコーディングの方法
まず、.csvファイルまたは関連するファイルをPandasのデータフレームに読み込みます。
df = pd.read_csv("data.csv")
ユニークな値を確認し、データをよりよく理解するために、次のPandas関数を使用することができます。
df['categorical_column'].nunique()
df['categorical_column'].unique()
このダミーデータでは、関数は以下の出力を返します:
>>> 4
>>> array(['値A', '値C', '値D', '値B'], dtype=object)
カテゴリカル列については、複数の列に分割することができます。そのために、pandas.get_dummies()メソッドを使用します。以下の引数を取ります:
引数 | |
data: array-like、Series、またはDataFrame | 元のパンダのデータフレームオブジェクト |
columns: list-like、デフォルトはNone | ホットエンコードするカテゴリカル列のリスト |
drop_first: bool、デフォルトはFalse | 最初のカテゴリラベルを削除します |
関数をよりよく理解するために、ダミーデータセットのワンホットエンコーディングを行いましょう。
カテゴリカル列のワンホットエンコーディング
get_dummiesメソッドを使用し、元のデータフレームをdata入力として渡します。 columnsでは、カテゴリカル列のヘッダーだけを含むリストを渡します。
df_encoded = pd.get_dummies(df, columns=['カテゴリカル列', ])
以下のコマンドは、カテゴリカル列を削除し、各一意の値に対して新しい列を作成します。したがって、単一のカテゴリカル列が4つの新しい列に変換されます。4つの列のうち1つだけが1の値を持ち、他の3つは0でエンコードされます。これがワンホットエンコーディングと呼ばれる理由です。
カテゴリカル列値A | カテゴリカル列値B | カテゴリカル列値C | カテゴリカル列値D |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
問題は、ブール列をワンホットエンコードする場合に発生します。これにより、2つの新しい列が作成されます。
バイナリ列のホットエンコーディング
df_encoded = pd.get_dummies(df, columns=[bool_col, ])
bool_col_False | bool_col_True |
0 | 1 |
1 | 0 |
0 | 1 |
1 | 0 |
Trueが1にエンコードされ、Falseが0にエンコードされる1つの列だけで済むのに、不必要に列が増えています。これを解決するために、drop_first引数を使用します。
df_encoded = pd.get_dummies(df, columns=['bool_col'], drop_first=True)
bool_col_True |
1 |
0 |
1 |
0 |
結論
ダミーデータセットはワンホットエンコードされ、最終的な結果は以下のようになります
col_1 | col_2 | bool | A | B | C | D | label |
9 | 4 | 1 | 1 | 0 | 0 | 0 | 0 |
7 | 2 | 0 | 0 | 1 | 0 | 0 | 0 |
9 | 5 | 1 | 0 | 0 | 0 | 1 | 0 |
8 | 3 | 0 | 0 | 0 | 0 | 1 | 1 |
9 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
5 | 4 | 0 | 0 | 0 | 0 | 1 | 1 |
8 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
6 | 6 | 1 | 0 | 0 | 0 | 1 | 1 |
0 | 5 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 8 | 1 | 0 | 0 | 0 | 1 | 0 |
カテゴリ値とブール値は、機械学習アルゴリズムへの入力として使用できる数値に変換されました。 Muhammad Arhamは、コンピュータビジョンと自然言語処理の分野で働くディープラーニングエンジニアです。彼は、Vyro.AIでグローバルトップチャートに到達したいくつかの生成型AIアプリケーションの展開と最適化に取り組んできました。彼は、知的システムのための機械学習モデルの構築と最適化に興味があり、継続的な改善を信じています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「FathomNetをご紹介します:人工知能と機械学習アルゴリズムを使用して、私たちの海洋とその生物の理解のために視覚データの遅れを処理するためのオープンソースの画像データベース」
- 中国の研究者たちは、データプライバシーを保護しながらスクリーニングを改善するために、フェデレーテッドラーニング(FL)に基づく新しいμXRD画像スクリーニング方法を提案しました
- 「2023年のトップデータウェアハウジングツール」
- 人工知能、IoT、深層学習、機械学習、データサイエンス、その他のソフトウェアアプリケーションに最適なトップデータベース
- コンピュータビジョンシステムは、ビデオから筋肉の活動を推定できるのでしょうか?筋肉の動き(MIA)に出会う:筋肉の活動を人間の動き表現に組み込むための新しいデータセット
- 中国の最新のAI研究により、「OMMO」と呼ばれる大規模な屋外マルチモーダルデータセットと新しい視点合成および暗黙的なシーン再構築のためのベンチマークが紹介されました
- 「2023年の小売り向けデータストリーミングの状況」