Could you please clarify to me the datatype of `y_true` and `y_pred`? Your use of `in` seems to suggest they are sequences of iterables (tuples?) over labels. But I got the impression from the use of `LabelBinarizer` and the indicator matrix case that we had a binary array. I don't know whether I've misread some code.

If it's represented as a binary array, can't you do something like:
```python
true_pos = (y_true & y_pred).sum(axis=0)`
false_pos = (~y_true & y_pred).sum(axis=0)
false_neg = (y_true & ~y_pred).sum(axis=0)
```
?
If there's some reason not to use a binary array, would set intersection and difference be better (in the case of many labels) than iterating through every label for each sample?