Есть ли способ определить долю каждой метки, которую я хочу в перекрестной проверке sci-kit learn? - PullRequest
0 голосов
/ 28 мая 2020

Я написал простой сценарий Python, который использует sklearn.neural_network.MLPClassifier и sklearn.model_selection.GridSearchCV для прогнозирования данных двоичной классификации, каждая точка помечена 0 или 1. В обучающих данных примерно 90% имеют метку. 1 и 10% имеют метку 0. В тестовых данных примерно 35% имеют метку 1 и 65% имеют метку 0. Эта пропорция известна, хотя метки неизвестны.

Моя модель в настоящее время переоборудован. Моя оценка перекрестной проверки данных обучения составляет 85-90%, но оценка, когда я запускаю код на тестовом наборе, ниже 40%.

Один обходной путь, о котором я подумал, заключается в том, что я могу попробовать установить GridSearchCV для разделения данных, чтобы каждый набор для обучения / проверки имел примерно такую ​​же пропорцию меток, что и тестовые данные. Однако, похоже, это не вариант с этой библиотекой, и мой google-fu не дал никаких результатов с точки зрения других программ обучения sci-kit.

Есть ли другие библиотеки, которые я мог бы использовать, или параметр, который я мог ввести, но не нашел? Спасибо.

1 Ответ

1 голос
/ 28 мая 2020

Я бы порекомендовал библиотеку imblearn, поскольку она предлагает большое разнообразие методов повторной выборки. Я не знаю размер или другие особенности вашего набора данных, но в целом я бы сказал, что следует отдавать предпочтение стратегиям с передискретизацией, а не стратегиям с недостаточной выборкой. Например, вы можете использовать SMOTE для передискретизации ваших 0 меток в обучающем наборе. Параметр sampling_strategy также позволяет вам заранее указать желаемое соотношение.

...