Why the dataset need to use X as attributes and y as label? WHy not use a X to have it all?
X is what your model uses to make a prediction, y is the right answer you want it to give. If you include y in X, then you are giving the model the right answer as input. It's really easy to make a prediction that way, because it will pass the y from the input straight to the output. If you did this and you looked at feature importance, you would see that the only "feature" that matters is the one that directly contains the answer.