データサイエンス

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でダウンサンプリングをする方法を説明となります。是非、利用してみて下さい。

Y.T
アナリティクス&デベロップメントに所属してます。