ทบทวน Pipeline ด้วย sklearn

Extreme Gradient Boosting with XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

ทบทวน Pipeline

  • รับ list ของ 2-tuple แบบมีชื่อ (name, pipeline_step) เป็น input
  • แต่ละ tuple ใส่ estimator หรือ transformer ที่ใช้งานร่วมกับ scikit-learn ได้
  • Pipeline มีเมธอด fit/predict
  • ใช้เป็น estimator ใน grid/randomized search และเมธอด cross_val_score ได้
Extreme Gradient Boosting with XGBoost

ตัวอย่าง scikit-learn pipeline

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)
Extreme Gradient Boosting with XGBoost

ตัวอย่าง scikit-learn pipeline

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

print("Final RMSE:", final_avg_rmse)
Final RMSE: 4.54530686529
Extreme Gradient Boosting with XGBoost

การเตรียมข้อมูล I: LabelEncoder และ OneHotEncoder

  • LabelEncoder: แปลงคอลัมน์ categorical ที่เป็น string ให้เป็น integer
  • OneHotEncoder: รับคอลัมน์ integer แล้วเข้ารหัสเป็น dummy variable
  • ไม่สามารถใช้งานภายใน pipeline ได้โดยตรง
Extreme Gradient Boosting with XGBoost

การเตรียมข้อมูล II: DictVectorizer

  • ใช้งานในงาน text processing เป็นหลัก
  • แปลง list ของ feature mapping ให้เป็น vector
  • ต้องแปลง DataFrame เป็น list ของ dictionary ก่อน
  • ดูเพิ่มเติมได้ที่ เอกสาร scikit-learn
Extreme Gradient Boosting with XGBoost

มาสร้าง Pipeline กันเถอะ!

Extreme Gradient Boosting with XGBoost

Preparing Video For Download...