Linjära basmodeller
Nu när du har använt beslutsträd som basmodeller i XGBoost är det dags att prova den andra typen av basmodell – en linjär inlärare. Den här modellen är visserligen mindre vanlig i XGBoost, men den låter dig skapa en regulariserad linjär regression med XGBoosts kraftfulla inlärnings-API. Eftersom den är ovanlig måste du dock använda XGBoosts egna funktioner, som inte är kompatibla med scikit-learn, till exempel xgb.train().
För att göra det behöver du skapa en parameterdictionary som beskriver vilken typ av booster du vill använda (på liknande sätt som du skapade dictionaryn i kapitel 1 när du använde xgb.cv()). Det nyckel-värde-par som definierar boostern (basmodellen) du behöver är "booster":"gblinear".
När du har skapat modellen kan du använda metoderna .train() och .predict() precis som tidigare.
Data har redan delats upp i tränings- och testset, så du kan gå direkt till att skapa de DMatrix-objekt som XGBoosts inlärnings-API kräver.
Den här övningen är en del av kursen
Extreme Gradient Boosting med XGBoost
Övningsinstruktioner
- Skapa två
DMatrix-objekt –DM_trainför träningsdata (X_trainochy_train) ochDM_testför testdata (X_testochy_test). - Skapa en parameterdictionary som definierar vilken
"booster"-typ du ska använda ("gblinear") samt vilket"objective"du vill minimera ("reg:squarederror"). - Träna modellen med
xgb.train(). Ange argument för följande parametrar:params,dtrainochnum_boost_round. Använd5boosting-rundor. - Förutsäg etiketterna för testdatat med
xg_reg.predict()och skicka inDM_test. Tilldela resultatet tillpreds. - Klicka på Skicka in svar för att se RMSE-värdet!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Convert the training and testing sets into DMatrixes: DM_train, DM_test
DM_train = ____
DM_test = ____
# Create the parameter dictionary: params
params = {"____":"____", "____":"____"}
# Train the model: xg_reg
xg_reg = ____.____(____ = ____, ____=____, ____=____)
# Predict the labels of the test set: preds
preds = ____
# Compute and print the RMSE
rmse = np.sqrt(mean_squared_error(y_test,preds))
print("RMSE: %f" % (rmse))