для регрессии. Смотрите заголовок: «Параметры задачи обучения»

ичок в XGBoost в Python, поэтому я прошу прощения, если ответ здесь очевиден, но я пытаюсь взять panda dataframe и получить XGBoost в Python, чтобы дать мне те же прогнозы, которые я получаю, когда использую оболочку Scikit-Learn для того же упражнение. До сих пор я не мог этого сделать. Просто в качестве примера, здесь я беру набор данных из Бостона, преобразую его в кадр данных panda, обучаюсь первым 500 наблюдениям набора данных, а затем прогнозирую последние 6. Сначала я делаю это с XGBoost, а затем с оболочкой Scikit-Learn и Я получаю разные прогнозы, хотя я установил параметры модели одинаковыми. В частности, предсказания массивов сильно отличаются от предсказаний массивов2 (см. Код ниже). Любая помощь приветствуется!

from sklearn import datasets
import pandas as pd
import xgboost as xgb
from xgboost.sklearn import XGBClassifier
from xgboost.sklearn import XGBRegressor

### Use the boston data as an example, train on first 500, predict last 6 
boston_data = datasets.load_boston()
df_boston = pd.DataFrame(boston_data.data,columns=boston_data.feature_names)
df_boston['target'] = pd.Series(boston_data.target)


#### Code using XGBoost
Sub_train = df_boston.head(500)
target = Sub_train["target"]
Sub_train = Sub_train.drop('target', axis=1) 

Sub_predict = df_boston.tail(6)
Sub_predict = Sub_predict.drop('target', axis=1)  

xgtrain = xgb.DMatrix(Sub_train.as_matrix(), label=target.tolist())
xgtest = xgb.DMatrix(Sub_predict.as_matrix())

params = {'booster': 'gblinear', 'objective': 'reg:linear', 
      'max_depth': 2, 'learning_rate': .1, 'n_estimators': 500,    'min_child_weight': 3, 'colsample_bytree': .7,
      'subsample': .8, 'gamma': 0, 'reg_alpha': 1}

model = xgb.train(dtrain=xgtrain, params=params)

predictions = model.predict(xgtest)

#### Code using Sk learn Wrapper for XGBoost
model = XGBRegressor(learning_rate =.1, n_estimators=500,
max_depth=2, min_child_weight=3, gamma=0, 
subsample=.8, colsample_bytree=.7, reg_alpha=1, 
objective= 'reg:linear')

target = "target"

Sub_train = df_boston.head(500)
Sub_predict = df_boston.tail(6)
Sub_predict = Sub_predict.drop('target', axis=1)

Ex_List = ['target']

predictors = [i for i in Sub_train.columns if i not in Ex_List]

model = model.fit(Sub_train[predictors],Sub_train[target])

predictions2 = model.predict(Sub_predict)

Ответы на вопрос(1)

Ваш ответ на вопрос