[我注意到here和here中讨论了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的两种可能的实现,当我尝试通过两种可能的实现运行同一数据集时,我注意到...
确保随机种子相同