Tableau Prepでダウンサンプリングをする方法

機械学習の分類問題で、不均衡データを扱う場合の対処法の一つにダウンサンプリングがあります。今回は、Tableau Prepでのダウンサンプリングの実装方法をご紹介します。利点としては、Tableau Prepで機械学習のための一枚表を作る流れの延長上で、手軽にダウンサンプリングが出来ることです。


事前準備

  • pythonPython 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”と表示されれば正常に起動されています。
f:id:gri-blog:20201130093540p:plain

3. Tableau Prepでのスクリプトの追加

(1)Prepにダウンサンプリングしたいファイルを接続
(2)スクリプトステップを追加

f:id:gri-blog:20201130094255p:plain

(3)スクリプトを設定
f:id:gri-blog:20201130094337p:plain

  1. 接続タイプ
    Tableau Python(TabPy) Serverを選択

  2. サーバー
    サーバー: localhost、ポート: 9004を記載し、サインイン
    f:id:gri-blog:20201130094501p:plain

  3. ファイル名
    任意のスクリプト名.py

  4. 関数名
    downsampling_tabpy


スクリプトが実行されると、正解ラベル(Churn?)のTrueとFalseが同じレコード数に揃うようにダウンサンプリングされます。
f:id:gri-blog:20201130094719p:plain

以上で、Tableau Prepでダウンサンプリングをする方法を説明となります。是非、利用してみて下さい。