使用 sklearn 的管線回顧

使用 XGBoost 的極端梯度提升

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Pipeline 重點回顧

  • 輸入為具名 2 元組(name, pipeline_step)的清單
  • 元組可包含任意相容 scikit-learn 的估計器或轉換器物件
  • Pipeline 實作 fit/predict 方法
  • 可作為輸入估計器,用於 grid/randomized search 與 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:把整數欄位編碼為虛擬變數
  • 不能在同一個 pipeline 內完成
使用 XGBoost 的極端梯度提升

前處理 II:DictVectorizer

  • 傳統上用於文字處理
  • 將特徵對應的清單轉為向量
  • 需先把 DataFrame 轉為字典清單
  • 參考 scikit-learn 說明文件
使用 XGBoost 的極端梯度提升

一起來練習吧!

使用 XGBoost 的極端梯度提升

Preparing Video For Download...