Windows 错误 [错误 -529697949] 将 XGBoost 与 python 一起使用

问题描述 投票:0回答:2

我正在解决这个机器学习问题(来自之前的 Kaggle 练习竞赛:https://www.kaggle.com/c/nyc-taxi-trip-duration)并且我正在尝试使用 XGBoost 但收到一个错误,我不知道如何解决。我在谷歌和堆栈溢出上搜索,但找不到有类似问题的人。

我通过 Anaconda 将 python 2.7 与 Spyder IDE 结合使用,并且使用的是 Windows 10。我在安装 xgboost 软件包时确实遇到了一些问题,所以我不会完全消除这可能是安装错误的想法。不过,我也在学习关于 ML 的 Udemy 课程,我能够在小型数据集上很好地使用 xgboost,并且我使用相同的函数。

代码非常简单:

... import libraries

# import dataset 
dataset = pd.read_csv('data/merged.csv')
y = dataset['trip_duration'].values
del dataset['trip_duration'], dataset["id"], dataset['distance']
X = dataset.values

# Split dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25)

# fit XGBoost to training set
classifier = XGBClassifier()
classifier.fit(X_train, y_train)   

但是它会抛出以下错误:

In [1]: classifier.fit(X_train, y_train)
Traceback (most recent call last):

  File "<ipython-input-44-f44724590846>", line 1, in <module>
    classifier.fit(X_train, y_train)

  File "C:\Users\MortZ\Anaconda3\lib\site-packages\xgboost\sklearn.py", line 464, in fit
    verbose_eval=verbose)

  File "C:\Users\MortZ\Anaconda3\lib\site-packages\xgboost\training.py", line 204, in train
    xgb_model=xgb_model, callbacks=callbacks)

  File "C:\Users\MortZ\Anaconda3\lib\site-packages\xgboost\training.py", line 74, in _train_internal
    bst.update(dtrain, i, obj)

  File "C:\Users\MortZ\Anaconda3\lib\site-packages\xgboost\core.py", line 819, in update
    _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, iteration, dtrain.handle))

WindowsError: [Error -529697949] Windows Error 0xE06D7363

如何解决这个问题?

python-2.7 anaconda xgboost
2个回答
2
投票

经过几天的努力,我终于找到了解决方案。

我的一个朋友告诉 xgboost 已知 python 2.7 有问题,所以我将其升级到 3.6 这并没有完全解决我的问题,但给了我一个已知错误:

OSError: [WinError 541541187] Windows Error 0x20474343

经过一番挖掘,我找到了解决方案。我试图使用的拟合函数是问题的根源(尽管它确实在不同的数据集上工作,所以我不完全确定为什么......)。

解决方案

改变

classifier = XGBClassifier()
classifier.fit(X_train, y_train) 

dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
watchlist = [(dtrain, 'train'), (dtest, 'test')]
xgb_pars = {'min_child_weight': 1, 'eta': 0.5, 'colsample_bytree': 0.9, 
        'max_depth': 6, 'subsample': 0.9, 'lambda': 1., 'nthread': -1, 'booster' : 'gbtree', 'silent': 1, 'eval_metric': 'rmse', 'objective': 'reg:linear'}
model = xgb.train(xgb_pars, dtrain, 10, watchlist, early_stopping_rounds=2, maximize=False, verbose_eval=1)
print('Modeling RMSLE %.5f' % model.best_score)

2
投票

我猜这个错误是因为您使用 XGBClassfier 而不是 XGBRegressor 来解决回归问题。

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