sklearnを使ったパイプラインの復習

XGBoost で学ぶ極限の勾配ブースティング

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Pipelineの復習

  • 名前付き2タプル(名前、パイプラインステップ)のリストを入力として受け取る
  • タプルにはscikit-learn互換の任意の推定器またはトランスフォーマーオブジェクトを含めることができる
  • Pipelineはfit/predictメソッドを実装している
  • グリッド/ランダム探索やcross_val_scoreメソッドの入力推定器として使用可能
XGBoost で学ぶ極限の勾配ブースティング

scikit-learnパイプラインの例

import pandas as pd
from sklearn.ensemble import RandomForestRegressor
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_score

names = ["crime","zone","industry","charles","no","rooms", "age", "distance","radial","tax","pupil","aam","lower","med_price"] data = pd.read_csv("boston_housing.csv",names=names) X, y = data.iloc[:,:-1], data.iloc[:,-1]
rf_pipeline = Pipeline[("st_scaler", StandardScaler()), ("rf_model",RandomForestRegressor())] scores = cross_val_score(rf_pipeline,X,y, scoring="neg_mean_squared_error",cv=10)
XGBoost で学ぶ極限の勾配ブースティング

scikit-learnパイプラインの例

final_avg_rmse = np.mean(np.sqrt(np.abs(scores)))

print("Final RMSE:", final_avg_rmse)
Final RMSE: 4.54530686529
XGBoost で学ぶ極限の勾配ブースティング

前処理 I:LabelEncoderとOneHotEncoder

  • LabelEncoder:カテゴリ列の文字列を整数に変換する
  • OneHotEncoder:整数列をダミー変数にエンコードする
  • パイプライン内では使用不可
XGBoost で学ぶ極限の勾配ブースティング

前処理 II:DictVectorizer

  • 主にテキスト処理で使用される
  • 特徴マッピングのリストをベクトルに変換する
  • DataFrameを辞書エントリのリストに変換する必要がある
  • scikit-learnドキュメントを参照
XGBoost で学ぶ極限の勾配ブースティング

パイプラインを構築しましょう!

XGBoost で学ぶ極限の勾配ブースティング

Preparing Video For Download...