Обзор пайплайнов в sklearn

Экстремальный градиентный бустинг с XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Обзор Pipeline

  • Принимает список именованных пар (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: принимает столбец целых чисел и кодирует их как фиктивные переменные
  • Не может применяться внутри пайплайна
Экстремальный градиентный бустинг с XGBoost

Предобработка II: DictVectorizer

  • Традиционно используется в обработке текста
  • Преобразует списки словарей признаков в векторы
  • Необходимо конвертировать DataFrame в список словарей
  • Изучите документацию scikit-learn
Экстремальный градиентный бустинг с XGBoost

Давайте потренируемся!

Экстремальный градиентный бустинг с XGBoost

Preparing Video For Download...