ダミー変数列の作成
カテゴリの列を、値ごとの 0/1 の列に展開します(ワンホット表現)。機械学習で文字列のカテゴリを扱うための前処理です。
1 列のまま数値にしたいなら文字列を数値に変換を使ってください。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
Spark エンジンでも動きます。
行の数は変わりません。 増えるのは列だけです。
設定項目
- 処理対象列を選択
- 展開する列。複数選べます。型の制限はなく、数値や日付の列も選べます(いったん文字に直してから展開します)。
- 処理対象列を結果から除外する
- on にすると、展開前の列を消します。既定は off です。
展開のしかた
入力
| 地域 |
|---|
| 東京 |
| 大阪 |
| 福岡 |
出力(元の列は既定で残ります)
| 地域 | 地域_大阪 | 地域_東京 | 地域_福岡 |
|---|---|---|---|
| 東京 | 0 | 1 | 0 |
| 大阪 | 1 | 0 | 0 |
| 福岡 | 0 | 0 | 1 |
新しい列の名前は <元の列名>_<値>、並び順は値を文字として並べた昇順です。日本語の値は文字コードの順になるので、五十音順にはなりません。欠損値は <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 列が、この順で増えます。