【发布时间】:2020-10-04 03:09:48
【问题描述】:
我无法将我的数据正确地拟合到 XG Boost。更改我的数据类型没有帮助。
有 1225 行和 15 列。
RangeIndex(start=0, stop=1225, step=1)
其他分类算法工作正常,但输入此代码后 XG Boost 给了我以下错误。
import xgboost as xgb
X_train, X_test, y_train, y_test = train_test_split(loans.index, loans.BAD, test_size=0.2, random_state=0)
train = xgb.DMatrix(X_train, label=y_train)
test = xgb.DMatrix(X_test, label=y_test)
param = {'max_depth':2, 'eta':1, 'objective':'binary:logistic' }
num_round = 2 bst = xgb.train(param, X_train, 10)
---------------------------------------------------------------------------
`TypeError Traceback (most recent call last)
<ipython-input-117-378a1a19d4c9> in <module>
1 param = {'max_depth':2, 'eta':1, 'objective':'binary:logistic' }
2 num_round = 2
----> 3 bst = xgb.train(param, X_train, 10)
~\Anaconda3\lib\site-packages\xgboost\training.py in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks)
207 evals=evals,
208 obj=obj, feval=feval,
--> 209 xgb_model=xgb_model, callbacks=callbacks)
210
211
~\Anaconda3\lib\site-packages\xgboost\training.py in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)
28 params += [('eval_metric', eval_metric)]
29
---> 30 bst = Booster(params, [dtrain] + [d[0] for d in evals])
31 nboost = 0
32 num_parallel_tree = 1
~\Anaconda3\lib\site-packages\xgboost\core.py in __init__(self, params, cache, model_file)
1026 for d in cache:
1027 if not isinstance(d, DMatrix):
-> 1028 raise TypeError('invalid cache item: {}'.format(type(d).__name__), cache)
1029 self._validate_features(d)
1030
TypeError: ('invalid cache item: Int64Index', [Int64Index([ 359, 745, 682, 903, 548, 906, 1040, 467, 85, 192,
...
600, 1094, 599, 277, 1033, 763, 835, 1216, 559, 684],
dtype='int64', length=980)])
【问题讨论】:
-
使用 xbg.train(param, train) 会导致下一个问题:XGBoostError: [13:30:03] C:/Users/Administrator/workspace/xgboost-win64_release_1.0.0/src/目标/回归_obj.cu:60:检查失败:preds.Size()== info.labels_.Size()(1 vs. 980):标签未正确提供preds.size = 1,label.size = 980感谢任何建议。我将在文档中阅读有关如何预测 preds 的信息,并且一定会描述我的解决方案。
-
这似乎与输入数据格式有关。答案有帮助吗?不要忘记您可以投票并接受答案。见What should I do when someone answers my question?,谢谢!
-
我已将输入数据格式 (dtype) 从整数更改为浮点数,但似乎没有帮助。我仍然有上面列出的那个错误。是的!我不会忘记投票,我会阅读链接。我非常感谢那些花时间帮助新手的人。
-
第一个答案应该能解决你的问题github.com/dmlc/xgboost/issues/2563
标签: python machine-learning model decision-tree xgboost