Я пытаюсь обучить модель xgboost на наборе данных X-train, X_test
. Код:xgboost параметр наблюдения: объект DMatrix не итерируемый
xgb_params = {
"objective": "multi:softmax",
"eta": 0.3,
"num_class": 62,
"max_depth": 10,
"nthread": 4,
"eval_metric": "merror",
"print.every.n": 1
#"silent": 1
}
num_rounds = 2
mask = np.random.choice([False, True], len(X_train), p=[0.75, 0.25])
not_mask = [not i for i in mask]
dtrain = xgb.DMatrix(X_train[not_mask], label=y[not_mask])
dtrain_watch = xgb.DMatrix(X_train[mask], label=y[mask])
dtest = xgb.DMatrix(X_test)
gbdt = xgb.train(xgb_params, dtrain, num_rounds, dtrain_watch)
preds = gbdt.predict(dtest)
Но я получаю сообщение об ошибке: TypeError: 'DMatrix' object is not iterable
на второй последней строке.
Что нужно сделать?
EDIT: Если я типаж в np.array
намеренно, я получаю TypeError: iteration over a 0-d array
EDIT 2: Если я избегаю DMatrix
полностью так: watchlist = list(np.append(X_train[mask], np.matrix(y[mask]).transpose(), axis=1))
я получаю другую ошибку
xgboost.py", line 340, in __init__
raise TypeError('invalid cache item: {}'.format(type(d).__name__))
TypeError: invalid cache item: matrix
Не похоже, что у 'DMatrix' есть поддержка итераций: https://github.com/dmlc/xgboost/blob/master/python-package/xgboost/core.py#L127 – shuttle87
Правда, так что мне нужно придумать это? – sinhayash