Python 3.x 错误:";基本分数>;0.0f&&;基本分数<;1.0f基本“物流损失的U分数必须为(0,1)”;关于XGBoost0.7

Python 3.x 错误:";基本分数>;0.0f&&;基本分数<;1.0f基本“物流损失的U分数必须为(0,1)”;关于XGBoost0.7,python-3.x,machine-learning,classification,xgboost,Python 3.x,Machine Learning,Classification,Xgboost,我有一个二进制分类问题,我想尝试一下:XGBoost模型,因为我在同一个数据集上使用GradientBoosting(sklearn)模型获得了很好的结果 import xgboost as xgb XGB = xgb.XGBClassifier() model = XGB.fit(X_train, y_train) 但我有一个错误,我不明白 XGBoostError: b'[11:52:35] src/objective/regression_obj.cc:48: Check failed

我有一个二进制分类问题,我想尝试一下:XGBoost模型,因为我在同一个数据集上使用GradientBoosting(sklearn)模型获得了很好的结果

import xgboost as xgb

XGB = xgb.XGBClassifier()
model = XGB.fit(X_train, y_train)
但我有一个错误,我不明白

XGBoostError: b'[11:52:35] src/objective/regression_obj.cc:48: Check failed: base_score > 0.0f && base_score < 1.0f base_score must be in (0,1) for logistic loss

Stack trace returned 10 entries:
[bt] (0) /home/ilb/anaconda3/lib/python3.6/site-packages/xgboost/./lib/libxgboost.so(_ZN4dmlc15LogMessageFatalD1Ev+0x29) [0x7f3bd4d15299]
[bt] (1) /home/ilb/anaconda3/lib/python3.6/site-packages/xgboost/./lib/libxgboost.so(_ZN7xgboost3obj18LogisticRegression12ProbToMarginEf+0x7e) [0x7f3bd4d9116e]
[bt] (2) /home/ilb/anaconda3/lib/python3.6/site-packages/xgboost/./lib/libxgboost.so(_ZN7xgboost11LearnerImpl13LazyInitModelEv+0x264) [0x7f3bd4d204a4]
[bt] (3) /home/ilb/anaconda3/lib/python3.6/site-packages/xgboost/./lib/libxgboost.so(XGBoosterUpdateOneIter+0x4a) [0x7f3bd4e69afa]
[bt] (4) /home/ilb/anaconda3/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(ffi_call_unix64+0x4c) [0x7f3ee8db6550]
[bt] (5) /home/ilb/anaconda3/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(ffi_call+0x1f5) [0x7f3ee8db5cf5]
[bt] (6) /home/ilb/anaconda3/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(_ctypes_callproc+0x3dc) [0x7f3ee8dad83c]
[bt] (7) /home/ilb/anaconda3/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(+0x9da3) [0x7f3ee8da5da3]
[bt] (8) /home/ilb/anaconda3/bin/../lib/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x9e) [0x7f3f1f69792e]
[bt] (9) /home/ilb/anaconda3/bin/../lib/libpython3.6m.so.1.0(+0x147d1b) [0x7f3f1f773d1b]
XGBootError:b'[11:52:35]src/objective/regression\u obj.cc:48:检查失败:基本分数>0.0f和基本分数<1.0f基本分数必须为(0,1)表示物流损失
堆栈跟踪返回了10个条目:
[bt](0)/home/ilb/anaconda3/lib/python3.6/site packages/xgboost//lib/libxgboost.so(_zn4dmlc15logmessagefatal1ev+0x29)[0x7f3bd4d15299]
[bt](1)/home/ilb/anaconda3/lib/python3.6/site packages/xgboost//lib/libxgboost.so(_zn7xgboost3obj18逻辑回归12probtomarginef+0x7e)[0x7f3bd4d9116e]
[bt](2)/home/ilb/anaconda3/lib/python3.6/site packages/xgboost//lib/libxgboost.so(_zn7xgboost11leanerimpl13lazyinitmodelev+0x264)[0x7f3bd4d204a4]
[bt](3)/home/ilb/anaconda3/lib/python3.6/site packages/xgboost//lib/libxgboost.so(XGBoosterUpdateOneIter+0x4a)[0x7f3bd4e69afa]
[bt](4)/home/ilb/anaconda3/lib/python3.6/lib dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(ffi_call_unix64+0x4c)[0x7f3ee8db6550]
[bt](5)/home/ilb/anaconda3/lib/python3.6/lib dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(ffi_调用+0x1f5)[0x7f3ee8db5cf5]
[bt](6)/home/ilb/anaconda3/lib/python3.6/lib dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(_ctypes_callproc+0x3dc)[0x7f3ee8dad83c]
[bt](7)/home/ilb/anaconda3/lib/python3.6/lib dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(+0x9da3)[0x7f3ee8da5da3]
[bt](8)/home/ilb/anaconda3/bin/。/lib/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x9e)[0x7f3f1f69792e]
[bt](9)/home/ilb/anaconda3/bin/。/lib/libpython3.6m.so.1.0(+0x147d1b)[0x7f3f1f773d1b]

我通过将xgboost软件包从xgboost 0.7降级到xgboost 0.6a2解决了此问题。

请尝试此方法并告诉我是否有帮助:

param0 = [
    ('max_depth', 3),
    ('eta', 0.025),
    ('objective', 'binary:logistic'),
    ('min_child_weight', 4),
    ('silent', 1),
    ('eval_metric', 'auc'),
    ('subsample', 0.75),
    ('colsample_bytree', 0.75),
    ('gamma', 0.75),
]

dtrain = xgb.DMatrix(X_train, label=y_train)
watchlist = [(dtrain, "trn")]
num_round = 100
bst = xgb.train(param0, dtrain, num_round, evals=watchlist)

这可能是xgboost 0.7.0版本中的输入错误。我错误地将“objective”键入“objective”,我的代码运行良好。但在我换回正确的单词后,出现了这个错误。

我在搜索两个小时后,通过将
LC\u ALL
环境变量设置为
en\u US.UTF-8
解决了这个问题:

vim ~/.bashrc
export LC_ALL=en_US.UTF-8
source ~/.bashrc
问题是我在XGBoost之前使用PySpark时。据我所知,问题的根源是JVM启动

我想指出的是,修复这个问题并不需要应用尚未合并的补丁。最初的补丁问题强调根本原因是参数解析的区域设置相关代码。0.5被解析为0,因为在某些语言环境下(例如俄语),输入应为0,5。您可以通过强制使用en_US locale(尤其是LC_NUMERIC)来避免此错误:

使用这样的设置,构建将顺利通过。在我的情况下,语言环境发生了变化 由于SendEnv LANG LC,通过ssh会话在另一台主机上_ 在/etc/ssh/ssh\u config中设置*


来源:@frenzykryger此处回答:

您尝试过重新安装xgboost软件包吗?是的,我尝试过,仍然是相同的错误
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=