多标签分类交叉验证错误

Error with cross validation on a multilabel classification

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

我认为问题出在 class 标签列表的元组中,例如 ([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)

如果你打算用scikit-learn解决多标签任务,建议先 使用 MultilabelBinarizer 将您的输出转换为标签二元指标。

分层 k 折不支持多标签格式,因为它需要平衡每个标签的阳性比例。相反,您可以使用 K-folds or shuffle split 交叉验证策略。