This is not what decision_function is supposed to do. You need to call decision_function on each estimator and return an array of shape [n_samples, n_classes]. Also I don't think you need to treat the multi-label case differently.