在某些情况下,差异是Python中xgb.train和xgb.XGBRegressor之间的值

问题描述 投票:1回答:1

[我注意到herehere中讨论了Python中XGBoost的两种可能的实现方式>

[当我尝试通过两种可能的实现方式运行相同的数据集时,我注意到结果是不同的。

代码

import xgboost as xgb
from xgboost.sklearn import XGBRegressor
import xgboost
import pandas as pd
import numpy as np
from sklearn import datasets

boston_data = datasets.load_boston()
df = pd.DataFrame(boston_data.data,columns=boston_data.feature_names)
df['target'] = pd.Series(boston_data.target)

Y = df["target"]
X = df.drop('target', axis=1)

#### Code using Native Impl for XGBoost
dtrain = xgboost.DMatrix(X, label=Y, missing=0.0)
params = {'max_depth': 3, 'learning_rate': .05, 'min_child_weight' : 4, 'subsample' : 0.8}
evallist = [(dtrain, 'eval'), (dtrain, 'train')]

model = xgboost.train(dtrain=dtrain, params=params,num_boost_round=200)

predictions = model.predict(dtrain)

#### Code using Sklearn Wrapper for XGBoost
model = XGBRegressor(n_estimators = 200, max_depth=3, learning_rate =.05, min_child_weight=4, subsample=0.8 )

#model = model.fit(X, Y, eval_set = [(X, Y), (X, Y)], eval_metric = 'rmse', verbose=True)
model = model.fit(X, Y)

predictions2 = model.predict(X)

print(np.absolute(predictions-predictions2).sum())

使用sklearn波士顿数据集的绝对差和

62.687134

[当我对其他数据集(如sklearn糖尿病数据集)运行相同时,我发现差异很小。

使用sklearn糖尿病数据集的绝对差总和

0.0011711121

[我注意到这里和这里都讨论了Python中XGBoost的两种可能的实现,当我尝试通过两种可能的实现运行同一数据集时,我注意到...

python machine-learning scikit-learn regression xgboost
1个回答
0
投票

确保随机种子相同

© www.soinside.com 2019 - 2024. All rights reserved.