gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:14:11 25 4
gpt4 key购买 nike

我注意到 Python 中的 XGBoost 有两种可能的实现,如所讨论的 herehere

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

代码

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 boston 数据集的绝对差和

62.687134

当我对 sklearn 糖尿病数据集等其他数据集运行相同的操作时,我发现差异要小得多。

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

0.0011711121

最佳答案

确保随机种子相同

对于两种方法设置相同的种子

param['seed'] = 123

编辑:然后有一些不同的事情。首先n_estimators也是200吗?您是否也将第二个数据集中的缺失值归为 0?其他默认值是否也相同(对于这个,我认为是的,因为它是一个包装器,但检查其他两件事)

关于python - 在某些情况下,Python 中 xgb.train 和 xgb.XGBRegressor 之间的差异是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59395651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com