コンテンツにスキップ

数値の二値化

数値を 0 と 1 の 2 つに分けます。平均より上かどうか、しきい値を超えたかどうかで分けたいときに使います。

3 つ以上に分けたいなら数値列のカテゴリ化を使ってください。

入出力

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

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

行の数は変わりません。 変わるのは、新しく増える列(または上書きした列)だけです。

設定項目

設定

二値化する列としきい値の組です。いくつでも足せます。

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。
新規列名を入力必須
新規列に挿入のときだけ出ます。
処理対象列を選択
二値化する列。数値の列だけ選べます。1 つの組につき 1 列です。既存列に上書きのときは必須です。
手法を選択
平均値より大きい値を1、それ以外を0に変換(既定)/ 中央値より大きい値を1、それ以外を0に変換 / 任意の閾値を設定。
閾値を入力必須
任意の閾値を設定のときだけ出ます。数値で入力します。

0 と 1 の分かれ方

しきい値ちょうどの値は 0 になります。 判定は「しきい値より大きいか」で、等しい値は 0 側です。

元の値しきい値 100 のとき
1501
1000
500

欠損値は欠損値のままです。 0 にも 1 にもなりません。列が全部欠損のときは、結果も全部欠損になります。

エラーと対処

処理対象列に数値以外がある

処理対象列を選択では数値の列しか選べませんが、選んだあとに上流のデータが変わり、その列が数値型でなくなったときに出ます。

処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。

直し方 — 列の型変更で数値にするか、その列を外します。

新規列名が既存の列名とぶつかっている

新規列に挿入で、すでにある列と同じ名前を入れたときに出ます。

新規列名({{new_col}})が既存の列名と重複しています。

直し方 — 別の名前にするか、既存列に上書きに切り替えます。

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

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

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

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

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

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

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

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

よく使う例

1. 平均より上かどうかで分ける

売上が平均より大きい行に印を付けて、後の集計で数えたいとき。

入力

店舗売上
渋谷150
新宿90
池袋60

設定

設定項目値
結果の挿入先を設定新規列に挿入
新規列名を入力高売上
処理対象列を選択売上
手法を選択平均値より大きい値を1、それ以外を0に変換

出力 — 平均は 100 なので、高売上 は上から 1 / 0 / 0 になります。

2. 決まった金額で分ける

社内の基準額が決まっていて、平均ではなくその額で分けたいとき。

入力

受注番号金額
A-1120000
A-2100000

設定

設定項目値
処理対象列を選択金額
手法を選択任意の閾値を設定
閾値を入力100000

出力 — A-1 は 1、A-2 はちょうどなので 0 になります。

3. 外れ値に強い基準で分ける

極端に大きい 1 件に平均が引っ張られてしまうとき。

入力

店舗売上
渋谷10000
新宿120
池袋100
上野80

設定

設定項目値
処理対象列を選択売上
手法を選択中央値より大きい値を1、それ以外を0に変換

出力 — 平均は 2575 で渋谷だけが 1 になりますが、中央値は 110 なので渋谷と新宿が 1 になります。

4. 複数の列をまとめて二値化する

売上・利益・件数をそれぞれ平均で分けたいとき。

入力

店舗売上利益件数
渋谷1503012
新宿90208

設定 — 設定を 3 つ足し、#1 に売上、#2 に利益、#3 に件数を指定します。

出力 — 新しい列が 3 つ増えます。元の 4 列はそのまま残ります。

5. 機械学習の目的変数を作る

「購入したかどうか」を予測したいが、手元にあるのは購入金額だけというとき。

入力

顧客購入金額
C-13200
C-20

設定

設定項目値
新規列名を入力購入フラグ
処理対象列を選択購入金額
手法を選択任意の閾値を設定
閾値を入力0

出力 — 購入フラグ が 1 / 0 になります。この列をそのまま分類モデルの目的変数に使えます。

関連