Изучаем Kaggle |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-06-26 09:02 Много раз мы слышали про соревнования по машинному обучению от коллег и друзей и, однажды, решили сами посмотреть и поучаствовать. Почему бы и нет? В качестве конкурса мы выбрали соревнование Categorical Feature Encoding Challenge II на международной площадке kaggle.com. Kaggle идеальное место для начала своего пути в ML и участия в соревнованиях по машинному обучению. Конкурсы можно выбирать по уровню сложности. На сайте Kaggle представлена среда для обработки данных Kaggle Kernels «Notebook». Также Kaggle выгодно отделяет то, что можно улучшать свой результат и подгружать в день до 5 вариантов решений. Так же, можно поделиться своим решением или изучить практики других участников, в разделе Notebook. С чего начать и какие основные этапы? Обзор. В описании задания указано, что необходимо найти котов в представленных данных (лозунг конкурса «Cat in the Dat»). Целью этого конкурса является изучение различных стратегий кодирования данных. Есть возможность попробовать разные схемы кодирования для разных алгоритмов, чтобы сравнить, как они работают. Метрика. Оценка задания проводится по площади под кривой ROC (area under the ROC curve). Данные. В разделе «Data» можно ознакомиться со структурой и содержанием представленных данных.Изначально данные представлены в виде: бинарных, номинальных, ординарных признаков (features), а также признаков в виде даты и месяца. В соревновании, необходимо предсказать целевой признак (в датасете обозначается колонкой с названием «target»). Речь идет о задаче классификации, т.е. нам необходимо предсказать вероятность к какому классу относится объект [от 0 до 1]. Решение. Примечание: Для изучения опыта других участников рекомендуется заглянуть в раздел «Discussion«. Заходим в Kaggle Kernels, представленный на сайте Kaggle (можно воспользоваться средой Jupiter notebook, облачным сервисом Google Colab, или другим удобным сервисом) и импортируем библиотеки, с которыми предполагаем работать: Примечание: Если вы работаете в Kaggle Kernels, то необходимые Датасеты уже будут подгружены в папку «input». Обработка данных. В нашем Датасете представленные признаки относятся к категориальным. Однако структура их неоднородна (часть представлена в числовом, часть в строковом формате). Предсказательные модели лучше понимают числа, нежели текст, поэтому мы применяем функцию LabelEncoder из библиотеки Scikit-Learn для преобразования всех данных в числа. Важно заметить, что данная функция должна быть применена как к обучающему (train), так и к тестовому (test) датасету, чтобы преобразовать их к единому виду. Вызываем LabelEncoder из библиотеки sklearn.preprocessing: Датасет может содержать значения «Nan» (пропущенные значения). Так как алгоритмы машинного обучения не работают с данными, в которых имеются пропущенные значения, нам необходимо подготовить наши данные. Есть несколько вариантов действий: удаление строк (axis=0) со значениями «Nan», либо их замена. Мы выбрали способ замены значений «Nan» методом fillna() с аргументом «Mode», так как этот способ больше всего подходит для категориальных признаков, то есть, проще говоря, заменим значение «Nan» самым популярным (медийным) значением в колонке. Существуют разные методы заполнения значений Nan, по моде, среднему значению или медиане. Используйте тот, который подходит под вашу задачу. Самое популярное значение в колонке с признаками, можно распознать функцией Mode. Реализовать замену «Nan» и функцию LabelEncoder, можно в одном цикле. Таким образом, мы автоматизируем этот процесс. Обучение. В библиотеке Scikit-learn существует множество алгоритмов машинного обучения: Random forest, Naive Bayes Classifier (NBC), логистическая регрессия, и другие алгоритмы. Выбирайте тот, с помощью которого сможете решить задачу с наивысшим Score (score – показатель качества модели, по которому вы рейтингуетесь в конкурсе). После множества вариаций, в качестве обучающей модели мы выбрали Naive Bayes — Наивный байесовский классификатор, про него и расскажем. Формируем обучающий набор. Импортируем алгоритм из библиотеки, и обучаем нашу модель с помощью метода «fit». В качестве аргументов, передаем наш обучающий набор: После того, как модель обучена, мы можем предсказывать значение целевого признака по входным признакам для новых объектов выборки «test». Делаем это с помощью метода «predict». Лидерборд. После этого, датасет с предсказанными значениями целевого признака в колонке «target», размещаем на странице конкурса в разделе «Submit Predictions», и на основании нашего Score, смотрим какое место мы занимаем в LeaderBoard (таблица рейтингования участников). Пробуйте, экспериментируйте и совершенствуйте свои навыки! Источник: newtechaudit.ru Комментарии: |
|