多标签分类上的交叉验证出错

Blu*_*unt 4 python svm scikit-learn cross-validation multilabel-classification

我正在使用"multiclass.OneVsRestClassifier"和"cross_validation.StratifiedKFold".当我对多标签问题进行交叉验证时,它会失败.是否可以对多标签问题进行交叉验证scikit-learn?

我认为问题出在类标签列表的元组Eg([1],[2],[2],[1],[1,2],[3],[1,2,3] ...... )

我相信这个错误的代码如下:

n_samples = X.shape[0]
Y_list = [value for value in Y.T]
print 'Y_list[0].shape:', Y_list[0].shape, 'len(Y_list):', len(Y_list)
cv = cross_validation.StratifiedKFold(Y_list, 3)
Run Code Online (Sandbox Code Playgroud)

Arn*_*oly 5

如果您打算使用scikit-learn解决多标签任务,建议首先使用MultilabelBinarizer将输出转换为标签二进制指示符.

分层k折叠不支持多标记格式,因为它需要平衡每个标记的阳性比例.相反,您可以使用K-foldsshuffle split cross validation策略.

  • @Arnaud Joly如果我有多标签分类和不平衡数据该怎么办?那么,如何在每个标签上进行平衡训练和测试集呢?谢谢:) (2认同)