Ok, I think I'm giving up.

Currently we have the current behavior:
- The user needs to call ``fit`` before using the estimator
- If the user passes y to ``transform`` that is doesn't have the same value of ``is_multilabel`` than during fit, an error is raised.
- The result type of ``inverse_transform`` is taken form ``y`` during ``fit``.

I wanted to add the possibility to leave out the call to fit, or rather to call ``transform`` without having all the data first. For that I added a ``classes`` parameter. To cope with the other points above, there are the following possibilities as far as I can see:

- Pass the ``multi-label format to ``inverse_transform`` and either
   - use the current boolean flags to do weak input validation  (`is_multilabel`` has the same value), but only if fit was called.
   - get rid of all input validation in transform. 
   - change the boolean attributes to a string with the same possible values as the parameters to ``inverse_transform`` and
        -  do weak input validation on them in transform
        -  validate that the format in transform is exactly the same (which changes behavior)

- Pass the boolean attributes that are inferred in ``fit`` optionally as ``__init__`` parameters.

I did the second because I thought it was the closest to the current behavior of the code and I just wanted to do a small addition to the functionality.
I am not sure which of the other possibilities above you are in favor of. It seems you didn't want input validation when ``fit`` is not called. I'm not sure why you don't want that. I'm not sure what input validation you want if ``fit`` was called and which attributes you would store during ``fit``?

I feel it is weird if calling ``fit`` is a no-op apart from the fact that it enforces input validation. That is really weird behavior imho.