コンテンツにスキップ

ダミー変数列の作成

カテゴリの列を、値ごとの 0/1 の列に展開します(ワンホット表現)。機械学習で文字列のカテゴリを扱うための前処理です。

1 列のまま数値にしたいなら文字列を数値に変換を使ってください。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでも動きます。

行の数は変わりません。 増えるのは列だけです。

設定項目

処理対象列を選択
展開する列。複数選べます。型の制限はなく、数値や日付の列も選べます(いったん文字に直してから展開します)。
処理対象列を結果から除外する
on にすると、展開前の列を消します。既定は off です。

展開のしかた

入力

地域
東京
大阪
福岡

出力(元の列は既定で残ります)

地域地域_大阪地域_東京地域_福岡
東京010
大阪100
福岡001

新しい列の名前は <元の列名>_<値>、並び順は値を文字として並べた昇順です。日本語の値は文字コードの順になるので、五十音順にはなりません。欠損値は <NA> という名前のカテゴリとして 1 列になり、日本語の値より前に並びます。

値の種類で動きが変わる

値の種類どうなるか
1 種類何も起きません。 列は増えません
2 種類0/1 の 1 列だけが増えます。名前は <元の列名>_変換後
3 種類以上<元の列名>_<値> が種類の数だけ増えます

エラーと対処

処理対象列を選んでいない

処理対象列を選択を空のまま実行したときに出ます。

対象の列が選択されていません。

直し方 — 処理対象列を選択で列を選んでください。

選んだ列が入力データにない

前のノードで列名を変えたり列を削ったりして、選んである列がなくなったときに出ます。

対象の列が存在しません。

直し方 — 列を選び直してください。

よく使う例

1. 地域を機械学習に使えるようにする

地域という文字列の列を、そのままではモデルに入れられないとき。

入力

地域売上
東京150
大阪120
福岡90

設定

設定項目値
処理対象列を選択地域
処理対象列を結果から除外するon

出力 — 地域_大阪 地域_東京 地域_福岡 の 3 列と 売上 が残り、地域 は消えます。

2. 複数のカテゴリ列をまとめて展開する

地域と会員区分の両方を使いたいとき。

入力

地域会員区分
東京一般
大阪優待

設定

設定項目値
処理対象列を選択地域、会員区分

出力 — 地域は 2 種類なので 地域_変換後 が 1 列、会員区分も 2 種類なので 会員区分_変換後 が 1 列、合わせて 2 列増えます。

3. 元のカテゴリも残して結果を確かめる

展開した後に「どの行がどのカテゴリだったか」を目で見たいとき。

入力

商品区分
食品
衣料
雑貨

設定

設定項目値
処理対象列を選択商品区分
処理対象列を結果から除外するoff(既定)

出力 — 商品区分 が残ったまま、その右に 商品区分_衣料 商品区分_雑貨 商品区分_食品 の 3 列が増えます(並び順は値を文字として並べた昇順なので、入力に出てきた順ではありません)。

4. 欠損のあるカテゴリ列を展開する

未回答の行が混ざっていて、「未回答であること」も特徴として使いたいとき。

入力

回答
はい
いいえ
(空欄)

設定

設定項目値
処理対象列を選択回答

出力 — 欠損も 1 つのカテゴリとして数えるので値は 3 種類になり、欠損を表す 回答_<NA> と 回答_いいえ 回答_はい の 3 列が、この順で増えます。

関連