I share those concerns although I don't see a nice an easy solution either.

Also to me `LinearModel` is really about being linear in the original space that is being unable to work well on non-linearly separable data.

Maybe Ridge* should no longer inherit from this base class as from now own, it's no longer a linear model in general. We might want to the ridge family in their own top level package and keep an import alias in the `sklearn.linear_model` for backward compat.

Maybe @larsmans and @GaelVaroquaux have an opinion on this inheritance issue too?

There is clearly a trade-off between class proliferation and encoding too much assumption in the inheritance tree.