相对简单的问题。查看 xgboost 的目标文档,我看到 "multi:softmax" 和 "multi:softprob",但两者都是多类,只会输出一个类。有没有办法使用 xgboost 预测多个标签,或者我最好为每个单独的标签训练多个模型。例如,在 sklearn 上,RandomForestClassifier 支持多标签,在拟合时,目标数组的输入可以是形状为 n 个样本 x n 个标签。
澄清一下:多类是指您想预测学生是否获得 A、B 或 C,而多标签就像预测学生是否在考试中获得了第 1、2、3 或 4 题。(他们只能获得一个成绩,但他们可以正确回答这些问题的任意组合)
我没有找到任何 xgboost 原生支持的内容。唯一的解决方案是将其包裹在执行相同操作sklearn.multioutput.MultiOutputClassifier
。但是这种方法的缺点是你不能利用xgboost本身的load_model
和save_model
,必须使用joblib之类的东西来转储和加载模型(就xgboost版本而言,它不向后兼容)。