分析手順の設計

本項では、分析手順の設計について、SAMPO/FABとsklearn-fabにおける実現方法およびスクリプトの差異を示します。 分析手順の設計は、データと前処理、学習器とパラメーター、などを定め、実現したい分析を実行するために実施します。

SAMPO/FAB

  • SPD, SRCにより、分析手順を設計します。

sklearn-fab

  • estimator選択、パラメーター指定などにより、分析手順を設計します。

  • 分析手順を一括実行するための、sklearn.pipeline.Pipelineを使用することもできます。

  • SAMPO/FABのSPD内で定義される、global_settingsに相当するものは必要ありません。

SAMPO/FAB

sklearn-fab

データ準備
import pandas as pd

# 学習用データ
train_data = pd.read_csv('../data/train_data.csv')
train_data.insert(0, '_sid', list(range(train_data.shape[0])))
# 予測用データ
predict_data = pd.read_csv('../data/predict_data.csv')
predict_data.insert(0, '_sid', list(range(predict_data.shape[0])))
データ準備
import pandas as pd

# 学習用データ
train_data = pd.read_csv('../data/train_data.csv')
# 予測用データ
predict_data = pd.read_csv('../data/predict_data.csv')
ASD
from sampotools.api import gen_asd_from_pandas_df

asd = gen_asd_from_pandas_df(train_data)
SPD
from sampo.api import gen_spd

spd_content = '''
dl -> std -> rg

---
components:
    dl:
        component: DataLoader

    std:
        component: StandardizeFDComponent
        features: scale == 'real' or scale == 'integer'

    rg:
        component: FABHMEBernGateLinearRgComponent
        features: name != 'price'
        target: name == 'price'
        standardize_target: True
        tree_depth: 3
        shrink_threshold: 2.0

global_settings:
    keep_attributes:
        - price
    feature_exclude:
        - price
'''

spd = gen_spd(template=spd_content)
sklearn.pipeline.Pipelineを使用しない場合
from sklearn.preprocessing import StandardScaler
from sklearn_fab import SklearnFABBernGateLinearRegressor

# SPD内のstd componentに相当するインスタンスを作成
scaler = StandardScaler()
# SPD内のrg componentに相当するインスタンスを作成
estimator = SklearnFABBernGateLinearRegressor(tree_depth=3, shrink_threshold=2.0)
sklearn.pipeline.Pipelineを使用した場合
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn_fab import SklearnFABBernGateLinearRegressor

# SPD内のstd, rg componentに相当する機能をもつパイプラインを作成
pipeline = Pipeline([('scaler', StandardScaler()),
                     ('estimator', SklearnFABBernGateLinearRegressor(tree_depth=3, shrink_threshold=2.0))])
学習用SRC
train_src_temp = '''
train:
    type: learn
    data_sources:
        dl:
            df: {{ data_df }}
            attr_schema: {{ asd }}
'''
予測用SRC
predict_src_temp = '''
predict:
    type: predict
    data_sources:
        dl:
            df: {{ data_df }}
            attr_schema: {{ asd }}
    model_process: {{ model_process }}
'''