4

データセットで xgboost モデルをトレーニングしようとしていX-train, X_testます。コード:

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最後の2行目。

何をする必要がありますか?

編集:np.array意図的にタイプキャストすると、TypeError: iteration over a 0-d array

編集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
4

3 に答える 3