Python 2.7 将XGBoost与python一起使用时出现Windows错误

Python 2.7 将XGBoost与python一起使用时出现Windows错误,python-2.7,anaconda,spyder,xgboost,Python 2.7,Anaconda,Spyder,Xgboost,因此,我正在解决这个机器学习问题(来自之前的Kaggle实践竞赛:),我试图使用XGBoost,但遇到了一个错误,我不知道如何解决。我在google和stack overflow上搜索过,但找不到有类似问题的人 我通过Anaconda将Python2.7与Spyder IDE结合使用,我使用的是Windows 10。我确实在安装xgboost软件包时遇到了一些问题,因此我不会完全抹去这可能是安装错误的想法。不过,我也在学习ML课程,我能够在一个小数据集上很好地使用xgboost,并且我使用了相同

因此,我正在解决这个机器学习问题(来自之前的Kaggle实践竞赛:),我试图使用XGBoost,但遇到了一个错误,我不知道如何解决。我在google和stack overflow上搜索过,但找不到有类似问题的人

我通过Anaconda将Python2.7与Spyder IDE结合使用,我使用的是Windows 10。我确实在安装xgboost软件包时遇到了一些问题,因此我不会完全抹去这可能是安装错误的想法。不过,我也在学习ML课程,我能够在一个小数据集上很好地使用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
[1]中的
:分类器.fit(X\u序列,y\u序列)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
分类器。配合(X_系列,y_系列)
文件“C:\Users\MortZ\Anaconda3\lib\site packages\xgboost\sklearn.py”,第464行,在fit中
详细(评估=详细)
文件“C:\Users\MortZ\Anaconda3\lib\site packages\xgboost\training.py”,第204行,列车中
xgb_模型=xgb_模型,回调=回调)
文件“C:\Users\MortZ\Anaconda3\lib\site packages\xgboost\training.py”,第74行,在列车内部
bst.update(dtrain,i,obj)
文件“C:\Users\MortZ\Anaconda3\lib\site packages\xgboost\core.py”,第819行,在更新中
_检查调用(_LIB.XGBoosterUpdateOneIter(self.handle、iteration、dtrain.handle))
WindowsError:[错误-529697949]Windows错误0xE06D7363
我真的不知道如何解释这一点,所以任何帮助都将不胜感激。 提前谢谢


莫茨挣扎了几天之后,我终于找到了解决办法

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

OSError: [WinError 541541187] Windows Error 0x20474343
经过一番挖掘,我找到了解决这个问题的办法。我尝试使用的fit函数是问题的根源(尽管它在不同的数据集上工作,所以我不完全确定为什么…)

解决方案 改变

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


我猜错误是因为您使用XGBClassifier而不是XGBRegressionor来解决回归问题

确实解决了完全相同的问题,但很想知道常规拟合函数为什么会消亡。讨厌,这对我来说很有效。您共享的参数是否为默认值?最好添加一个完整的xgboost默认值字典,或者在解决方案中澄清它们是否是默认值。
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)