使用 XGBoost 的极端梯度提升
Sergey Fogelson
Head of Data Science, TelevisaUnivision
import pandas as pd import xgboost as xgb import numpy as np from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline from sklearn.model_selection import cross_val_scorenames = ["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]xgb_pipeline = Pipeline[("st_scaler", StandardScaler()), ("xgb_model",xgb.XGBRegressor())] scores = cross_val_score(xgb_pipeline, X, y, scoring="neg_mean_squared_error",cv=10)final_avg_rmse = np.mean(np.sqrt(np.abs(scores))) print("Final XGB RMSE:", final_avg_rmse)
最终 RMSE: 4.02719593323
sklearn_pandas:DataFrameMapper - pandas 与 scikit-learn 的互操作sklearn.impute:SimpleImputer - 在 scikit-learn 中原生填补数值与分类型列sklearn.pipeline:FeatureUnion - 将多条特征流水线合并为单一特征流水线使用 XGBoost 的极端梯度提升