We do input validation in `fit`, not `__init__`. Otherwise `set_params` can still be used to set inconsistent parameters. Also, don't print warnings to `stdout` please, either use the `warnings` module or raise an exception. I think the latter is more appropriate.