機械学習の分類問題で、不均衡データを扱う場合の対処法の一つにダウンサンプリングがあります。今回は、Tableau Prepでのダウンサンプリングの実装方法をご紹介します。利点としては、Tableau Prepで機械学習のための一枚表を作る流れの延長上で、手軽にダウンサンプリングが出来ることです。
事前準備
- python(Python Version 3.7以上)のインストール
- tabpyのインストール
- imbalanced-learnのインストール
※必要に応じて、Anacondaやvenvで仮想環境の構築してください
Tableau Prepでのダウンサンプリング方法
1. スクリプトの準備
以下のスクリプトの’正解ラベル’を、任意の正解ラベルのカラム名に変更し、拡張子を .py にして保存して、使用します。
import pandas as pd from imblearn.under_sampling import RandomUnderSampler def get_output_schema(df_original): return df_original def downsampling_tabpy(df_original): print("start") y = df_original['正解ラベル'] X = df_original.drop('正解ラベル', axis=1) sampler = RandomUnderSampler(random_state=1234) X_resampled, y_resampled = sampler.fit_resample(X, y) print("resampled") resampled_array = pd.concat([X_resampled, y_resampled], axis=1) #resampled_array["正解ラベル"] = resampled_array["正解ラベル"].astype() print("done.") return resampled_array
2. TabPyの起動
コンソールにtabpyと入力すれば起動されます(仮想環境が必要な場合は、仮想環境を起動してから行ってください)。
コマンド実行後、以下の画面のように、“port 9004”と表示されれば正常に起動されています。
3. Tableau Prepでのスクリプトの追加
(1)Prepにダウンサンプリングしたいファイルを接続
(2)スクリプトステップを追加
(3)スクリプトを設定
- 接続タイプ
Tableau Python(TabPy) Serverを選択 - サーバー
サーバー: localhost、ポート: 9004を記載し、サインイン
- ファイル名
任意のスクリプト名.py - 関数名
downsampling_tabpy
スクリプトが実行されると、正解ラベル(Churn?)のTrueとFalseが同じレコード数に揃うようにダウンサンプリングされます。
以上で、Tableau Prepでダウンサンプリングをする方法を説明となります。是非、利用してみて下さい。