我正在尝试使用multi:softmax
目标训练xgboost模型,但准确度得分会卡住。
代码:
#preparing dataset omitted
xgb_params = {
"objective": "multi:softmax",
"eta": 1,
"num_class": 62,
"max_depth": 10,
"nthread": 4,
"eval_metric": "merror",
"print.every.n": 1,
"silent": 1,
"early.stop.round": 5
}
num_rounds = 5
mask = np.random.choice([False, True], len(X_train), p=[0.5, 0.5])
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)
watchlist = [(dtrain_watch, 'eval')]
gbdt = xgb.train(xgb_params, dtrain, num_rounds, watchlist)
preds = gbdt.predict(dtest)
输出:
[0] eval-merror:0.989950
[1] eval-merror:0.989950
[2] eval-merror:0.989950
[3] eval-merror:0.989950
[4] eval-merror:0.989950
我需要更改哪些参数来反映迭代中的任何更改eval-merror?
编辑:我试图将eta改为0.01,0.1,0.3和1,但是徒劳无功。答案 0 :(得分:0)
我认为它不是关于参数,而是关于你的数据。
您可以通过采用不同的数据集(例如来自kaggle)来测试它,并根据新问题构建一个类似的模型,但可能使用不同的"num_class": x
。
答案 1 :(得分:0)
您可以使用sklearn GridSearchCV执行参数调整。但如果你没有时间增加early.stop.round
和max_depth
并降低eta