вроде бы нейросеть лучше должна справляться с этой задачей, чем ансамблевые методы
Кто вам такое сказал? Deep Learning, то бишь нейросети, обычно требует очень много данных и хитрую архитектуру самой нейросети, чтобы превзойти современные "обычные" ансамбли, например, те же бустинги в "табличных" задачках. Нейросети однозначно хороши в анализе и генерации контента (картинки, тексты, звук и т.п.), но что касается "табличек", бустинги сейчас являются State of the art, нейросети начинают использовать только когда данных очень-очень много и в них совсем уже не явные зависимости, которые можно поймать только сложной архитектурой нейросети. В остальных случаях бустинги работают точнее и быстрее, и при этом требуют гораздо меньше ресурсов, чем нейросети. Молотить нейросетями таблички данных - это забивать гвозди молотком, практически. Есть гораздо более простые инструменты для этого, гораздо более эффективные по затрачиваемым усилиям.
Если более конкретно - нужно смотреть, какая архитектура у вашего MLP, сколько у него скрытых слоёв, какого они размера и т.д. Ну и вы можете сами провести исследование, взяв готовый MLP из Scikit-learn и погонять его с разным количеством слоёв (в вашем MLP, насколько я вижу, слои жёстко зашиты в код, он не позволяет их легко менять). С какого-то кол-ва слоёв наверняка вы сможете догнать бустинг. Но нужно подбирать архитектуру. Просто взять какую-то нейросеть и ожидать, что она однозначно будет лучше специализированных моделей в какой-то задаче - это довольно наивно.
P.S. Зря вы не посмотрели ROC-AUC для предсказания MLP. Бывает, что threshold оптимален не 0.5 для каких-то моделей, а больше или меньше. Есть вероятность, что ROC-AUC был бы не такой, как Accuracy. Не факт, конечно, но я бы проверил. То, что вы для разных моделей смотрите разные метрики - это довольно небрежный подход. Для бинарной классификации нужно смотреть ROC-AUC для всех моделей.