Я провел последние несколько дней, работая над табличным соревнованием Kaggle на май 2021 года, попробовав несколько методологий, чтобы улучшить результат. Самый последний пост, который я написал на эту тему, можно найти здесь: - «Как я повысил точность табличных соревнований Kaggle за май 2021 года с помощью SMOTE | пользователя Tracyrenee | MLearning.ai | Май 2021 года | Середина"

Насколько я знаю, этот пост будет моим последним постом по этому поводу, если, конечно, кто-то не захочет предоставить мне лучший алгоритм, чем я использовал ранее. Эту конкуренцию Kaggle очень сложно решить, потому что целью является один столбец мультикласса, который необходимо преобразовать в один кадр данных с горячим кодированием. Kaggle действительно позволяет людям делиться своими блокнотами, но мне не удалось найти хороший блокнот, который можно было бы использовать для решения этой проблемы. Тем не менее, у меня есть вопрос об этом конкурсе, как я предполагаю, и я написал три сообщения в блоге, чтобы описать свою работу.

В этом посте я буду использовать классификатор с несколькими выходами в надежде, что прогнозы улучшатся. Одна вещь, которую я обнаружил, используя классификатор с несколькими выходами, - это тот факт, что оценщик довольно часто давал более одного показания для каждой строки. Поэтому вместо строки, содержащей только один ответ, в ней часто было бы два, а иногда и три. Это кажется аномалией, но я тем не менее отправил свои ответы, потому что в представленной выборке было более одного ответа на строку, что указывает на приемлемость этого типа прогноза.

Я написал программу в бесплатном Jupyter Notebook от Kaggle, в котором уже установлены библиотеки, которые мне понадобятся для выполнения прогнозов.

Изначально мне нужно было импортировать только три основные библиотеки, используемые в этом блокноте Jupyter: pandas, numpy и os. Pandas используется для управления фреймами данных, numpy используется для выполнения алгебраических вычислений, а os используется для входа в операционную систему и получения файлов csv, которые мне понадобятся для обучения модели: -

Как только я получил CSV-файлы, которые были установлены в операционной директории, я считал их в систему. Я бы использовал три файла: обучение, тестирование и отправка:

Я проанализировал цель и именно тогда я обнаружил, что у цели есть дисбаланс классов. Этот дисбаланс классов необходимо устранить, иначе все прогнозы будут относиться к классу 2, что неприемлемо:

Я решил изменить свою тактику и одним горячим кодированием цели в начале программы: -

Как только у меня была одна горячая закодированная цель, я удалил ее из фрейма данных поезда: -

После того, как поезд был удален из фрейма данных поезда, я добавил тестовый фрейм данных к фрейму данных поезда, чтобы создать один большой фрейм данных, combi: -

Столбец id не нужен для выполнения прогнозов, поэтому я удалил его из комбинированного фрейма данных: -

Затем я нормализовал комби, чтобы привести все ячейки к значению от 0 до 1, что помогает делать прогнозы:

Затем я определил переменные, которые потребуются для обучения, и поместил данные в выбранную мной модель. X - это все строки в комбинации до длины поезда, X_test - это все строки в комбинации от длины поезда до конца, а y - цель: -

Затем я использовал функцию sklearn train_test_split (), чтобы разделить переменные X и y для обучения и проверки: -

Я выбрал модель и решил использовать MultiOutputClassifier () и LogisticRegression () sklearn для обучения и подгонки данных в модель. Я добился низкой точности, но все же решил продолжить: -

Я сделал прогноз на наборе для проверки и снова получил низкий балл: -

Затем я решил сделать прогноз на тестовом наборе данных, даже несмотря на то, что точность набора для проверки была плохой:

Я подготовил представление прогнозов MultiOutputClassified и отправил их в Kaggle: -

Таким образом, результат, который я получил по этому вопросу о конкурсе, был не таким большим, но это явное улучшение по сравнению с двумя моими предыдущими попытками решить вопрос о конкурсе. Это пример того, что должны пройти победители конкурса, чтобы выиграть соревнование. Эти люди, однако, обычно не хотят показывать свой код, чтобы проиллюстрировать методологии, которые они использовали для решения проблемы.

В качестве постскриптума я попробовал еще одну тактику, чтобы улучшить оценку этого конкурса, используя разделение, которое является макетом образца представления. Я отправил прогнозы, используя эту технику, в Kaggle, и он отказался принять это представление, сказав, что не удалось выполнить синтаксический анализ.

В заключение, я потратил несколько дней на работу над этим вопросом конкурса и решил больше не работать над ним, если только кто-нибудь не захочет предоставить мне новый алгоритм, который я могу опробовать.

Код этой программы можно найти в моем личном аккаунте Kaggle, ссылка здесь: - Tab - May 2021 multi | Kaggle