【发布时间】:2020-01-19 00:38:49
【问题描述】:
我正在尝试使用 xgboost 进行多类分类,并使用此代码构建了它,
clf = xgb.XGBClassifier(max_depth=7, n_estimators=1000)
clf.fit(byte_train, y_train)
train1 = clf.predict_proba(train_data)
test1 = clf.predict_proba(test_data)
这给了我一些很好的结果。对于我的情况,我的对数损失低于 0.7。但是在浏览了几页之后,我发现我们必须在 XGBClassifier 中使用另一个目标来解决多类问题。以下是这些页面的推荐内容。
clf = xgb.XGBClassifier(max_depth=5, objective='multi:softprob', n_estimators=1000,
num_classes=9)
clf.fit(byte_train, y_train)
train1 = clf.predict_proba(train_data)
test1 = clf.predict_proba(test_data)
这段代码也可以工作,但与我的第一个代码相比,它需要很长时间才能完成。
为什么我的第一个代码也适用于多类案例?我已经检查过它的默认目标是二进制:逻辑用于二进制分类,但它对多类效果真的很好吗?如果两者都正确,我应该使用哪一个?
【问题讨论】:
-
与不同的目标无关,但对于 softprob,与 n_jobs 的隐藏默认值相比,添加并行/线程参数 n_jobs=-1 是否会加快 fitter =1?
标签: python machine-learning scikit-learn xgboost