XGBoost为python/sklearn代码输出不同的结果
我试图在sklearn中重新创建python XGBoost模型。 虽然我设置了完全相同的参数和种子,但它给出了完全不同的结果 代码如下:XGBoost为python/sklearn代码输出不同的结果,python,scikit-learn,xgboost,Python,Scikit Learn,Xgboost,我试图在sklearn中重新创建python XGBoost模型。 虽然我设置了完全相同的参数和种子,但它给出了完全不同的结果 代码如下: train, test = train_test_split(df, test_size=0.5, random_state=42, stratify=df['lbl']) X_train = train.drop(['lbl'], axis=1) X_test = test.drop(['lbl'], axis=1) y_train = train.lbl
train, test = train_test_split(df, test_size=0.5, random_state=42, stratify=df['lbl'])
X_train = train.drop(['lbl'], axis=1)
X_test = test.drop(['lbl'], axis=1)
y_train = train.lbl
y_test = test.lbl
print('XGBoost version: ' + xgb.__version__)
### Python ###
if xmethod=='pure_py':
dtrain = xgb.DMatrix(data=train, label=train['lbl'])
dtest = xgb.DMatrix(data=test, label=test['lbl'])
param = {'objective':'multi:softprob', 'tree_method':'gpu_hist', 'num_class':num_class, 'eval_metric':["mlogloss","merror"], 'seed':42}
evals = [(dtest, 'eval'), (dtrain, 'train')]
bst = xgb.train(param, dtrain, num_boost_round=1000, evals=evals, early_stopping_rounds=10, verbose_eval=True)
### sklearn ###
if xmethod=='sklearn':
model = XGBClassifier(objective='multi:softprob', tree_method='gpu_hist', n_estimators=1000, num_class=num_class, eval_metric=['mlogloss', 'merror'], use_label_encoder=False, random_state=42)
eval_set = [(X_train, y_train), (X_test, y_test)]
model.fit(X_train, y_train, eval_set=eval_set, early_stopping_rounds=10, verbose=True)
python中的日志丢失和错误:
XGBoost version: 1.3.0
[0] eval-mlogloss:1.51391 eval-merror:0.18710 train-mlogloss:1.50553 train-merror:0.18507
[1] eval-mlogloss:0.90200 eval-merror:0.17051 train-mlogloss:0.90032 train-merror:0.16990
[2] eval-mlogloss:0.69203 eval-merror:0.11913 train-mlogloss:0.68116 train-merror:0.11873
[3] eval-mlogloss:0.56388 eval-merror:0.10154 train-mlogloss:0.54492 train-merror:0.09911
[4] eval-mlogloss:0.47289 eval-merror:0.08091 train-mlogloss:0.44991 train-merror:0.07949
[5] eval-mlogloss:0.40334 eval-merror:0.06816 train-mlogloss:0.37750 train-merror:0.06432
[6] eval-mlogloss:0.35381 eval-merror:0.05744 train-mlogloss:0.32585 train-merror:0.05178
[7] eval-mlogloss:0.31379 eval-merror:0.05218 train-mlogloss:0.28485 train-merror:0.04632
[8] eval-mlogloss:0.28107 eval-merror:0.04996 train-mlogloss:0.25141 train-merror:0.04450
[9] eval-mlogloss:0.25500 eval-merror:0.04672 train-mlogloss:0.22440 train-merror:0.04167
[10] eval-mlogloss:0.23367 eval-merror:0.04308 train-mlogloss:0.20203 train-merror:0.03782
来自sklearn的日志丢失和错误:
XGBoost version: 1.3.0
[0] validation_0-mlogloss:2.05255 validation_0-merror:0.34729 validation_1-mlogloss:2.07190 validation_1-merror:0.35214
[1] validation_0-mlogloss:6.59397 validation_0-merror:0.53823 validation_1-mlogloss:6.51344 validation_1-merror:0.53782
[2] validation_0-mlogloss:17.90245 validation_0-merror:0.68952 validation_1-mlogloss:17.49999 validation_1-merror:0.67112
[3] validation_0-mlogloss:20.14256 validation_0-merror:0.77933 validation_1-mlogloss:19.97256 validation_1-merror:0.77852
[4] validation_0-mlogloss:15.29048 validation_0-merror:0.66849 validation_1-mlogloss:15.12895 validation_1-merror:0.66606
[5] validation_0-mlogloss:13.90933 validation_0-merror:0.59891 validation_1-mlogloss:13.79206 validation_1-merror:0.59608
[6] validation_0-mlogloss:12.60146 validation_0-merror:0.58151 validation_1-mlogloss:12.45323 validation_1-merror:0.57747
[7] validation_0-mlogloss:11.75637 validation_0-merror:0.56027 validation_1-mlogloss:11.64163 validation_1-merror:0.55866
[8] validation_0-mlogloss:11.89571 validation_0-merror:0.52892 validation_1-mlogloss:11.69496 validation_1-merror:0.52427
[9] validation_0-mlogloss:10.91543 validation_0-merror:0.50667 validation_1-mlogloss:10.82722 validation_1-merror:0.50506
[10] validation_0-mlogloss:10.72312 validation_0-merror:0.49838 validation_1-mlogloss:10.63352 validation_1-merror:0.49029
这怎么会如此不同呢