機械学習の分類問題で、不均衡データを扱う場合の対処法の一つにダウンサンプリングがあります。今回は、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でダウンサンプリングをする方法を説明となります。是非、利用してみて下さい。



