【发布时间】:2020-04-11 05:17:08
【问题描述】:
我注意到在 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 boston 数据集的绝对差和
62.687134
当我对 sklearn 糖尿病数据集等其他数据集运行相同的数据时,我发现差异要小得多。
使用 sklearn 糖尿病数据集的绝对差和
0.0011711121
【问题讨论】:
-
另一个观察结果是,当我使用具有负值和正值的单个稀疏特征进行训练时,这些值似乎不匹配。
标签: python machine-learning scikit-learn regression xgboost