Если ваша цель категориальна, вы можете использовать классификатор, а не регрессор.
Вы можете прочитать эту статью , чтобы понять разницу, если хотите.
Так что в вашем случае выхотел бы использовать классификатор и сохранить вашу цель y как одну переменную вместо одного горячего кодирования.
Если вы хотите математическую модель, которую легко интерпретировать (я догадался, что вы используете линейную регрессию), вы можете захотеть многочленлогистическая регрессия:
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(random_state=0, solver='lbfgs',
multi_class='multinomial').fit(X, y)
Возможно, вы захотите проверить sklearn документацию .
Вы также можете попробовать очень популярные методы повышения деревьев, которые должны дать вам лучшие результаты: check catboost в качестве примера.