In MLJModelInterface.jl weights appear last, as in (X, y, w) (supervised case) but I'm inclined here to use (X, w, y), so that the target, when present, is always last. This is because the fallback for LearnAPI.target grabs the last element of a tuple.