Шпаргалка для подготовки к экзамену по машинному обучению |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-12-10 16:54 Небольшое предисловие Многие студенты колледжей в России в этом году будут обязаны сдать демо-экзамен по дисциплине, посвящённой изучению темы машинного обучения, но качество обучения в учебном заведении может страдать в силу малого количества опыта в вопросе проведения подобного рода тестирования. В силу данного обстоятельства студенты в поисках материала для подготовки обращаются к помощи интернет ресурсов, но с ужасом обнаруживают, что информация не такая структуризированная, как было бы удобно экзаменуемым. Меня тоже коснулась эта проблема, поэтому я решил написать статью, объясняющую принципы работы с необходимыми инструментами для сдачи демонстративного экзамена. Чем эта статья отличается от любых других, посвящённых основам работы с pandas, seaborn и sklearn? Именно данная работа обладает необходимой комплексностью повествования, описывающего специфику использования перечисленных ранее инструментов в контексте сдачи демонстративного экзамена. В данной статье собрано описание использования минимального набора инструментов, доступных к применению при выполнении поставленных комиссией задач. Ход работы Мы разбираем непосредственно один из демонстрационных вариантов прошлых лет, но в подробностях описывая каждый шаг, имея расчёт на то, что читатель сможет обратиться к шагам решения и описанным в них инструментам. Скачать готовый ipynb файл и разбираемую таблицу можно по ссылке. 0 - Начало работы В первую очередь нам необходима зайти в среду разработки, которая будет предоставлена на экзамене. Как правило это Anaconda Jupyter или Google Colab, однако экзаменационная комиссия вряд-ли будет против, если вы будете использовать что-то другое. 0.1 Заходим в Jupyter любым удобным способом: 0.2 Включаем подсказки. Для этого нам нужно перейти во вкладку Nbextensions, снять галочку с пункта " disable configuration ... " и поставить галочку напротив пункта "Hinterland". 0.3 Создаём новый файл 1 - Выполнение примера первой части экзамена 1.1 - Импортируем необходимые для выполнения первой части библиотек 1.2 - Читаем необходимых нам файл 1.3 - Посмотрим информацию о созданном нами dataset'е
Благодаря этой команде мы узнали типы данных столбцов. Так-же можно заметить, что столбец furnished (мебельный) полностью заполнен пропусками данных (NaN) . Давайте проверим количество пустых значений во всех столбцах. 1.4 - Удалим не информативные столбцы 1.5 - Теперь нам для каждого столбца(признака) таблицы повторить этот процесс, если нужно. Заменяем строковые переменные на числовые и NaN'ы на средние значения 1.5.1 - Выполним действия над столбцом "total_floor_count" Чтобы заменить найти строковые значения столбца нам нужно сначала их найти. Для этого воспользуемся методом value_counts() Строковые значения могут вызывать проблемы с обучение модели, так что заменим их на числовые. Теперь нам нужно заменить пустые значения на медиану столбца 1.5.2 - Теперь выполним действия над столбцом "building_age" Этот столбец содержит много строковых и много числовых значений, что делает обработку данных невозможной. Для того, что-бы обеспечить дальнейшую работоспособность программы нам необходимо декодировать этот столбец, т.е заменить все строковые значения на их уникальные номера. Для этого импортируем LabelEncoder Заменяем столбец "building_age" на его декодированную версию Проверим результат декодирования столбца "!Узнай что это или удали!" 1.5.3 - Теперь подготовим столбец "floor_no" Посмотрим уникальные значения столбца В столбце 'floor_no' мы считаем не информативным, так как он может зашумить нашу модель. Удалим его. 1.5.4 - Перейдём к столбцу "size" Столбец полностью состоит из числовых значений, следовательно его квантиль(Значение, которое заданная случайная величина не превышает с фиксированной вероятностью) может иметь выбросы(значения сильно больше или сильно меньше среднего). Это может негативно повлиять на качество модели. Чтобы этого избежать нам нужно посчитать максимальный и минимальный квантиль, чтобы затем удалить их выбросы.
В демонстративных целях мы можем построить график, называемый 'ящиком с усами', чтобы проверить верность нашего решения. Для дальнейшего преобразования столбца нам нужно посчитать его максимум Теперь проверим есть ли в столбце пустые значения 1.5.5 - Разберём столбец "heating_type" Посмотрим его уникальные значения Заменим строки на самое популярное значение столбца и закодируем переменную Столбец 'price' содержит огромное количество выбросов, поэтому мы не сможем взять его для обучения нашей модели, однако удалять его мы не будем. И просто заменим пропуски медианой значения 1.5.6 - Разберём столбец "price_currency" Посмотрим на уникальные значения ячеек столбца Заменим пустые значения самыми популярными значениями и закодируем весь столбец 1.5.7 - В столбце 'type' всего одно уникальное значение, так-что мы можем удалить его из базы данных.
1.5.8 - Перейдём к столбцу 'sub_type' В данном столбце отсутствуют пустые элементы, так - что мы можем просто закодировать его. 1.5.9 - Проверим столбец 'listing_type' Так как он имеет всего 3 уникальных числовых значения, то мы можем просто оставить этот столбец без изменений. 1.5.10 - В столбце 'tom' так-же есть определённое количество (181) уникальных значений и мы можем оставить и этот столбец без изменений. 1.5.11 - Признак 'room_count' представляет собой столбец, состоящий из строковых значений. Из этого следует то, что нам нужно их декодировать. 1.5.12 - Столбец id мы можем просто удалить, так как он не поможет нам обучить модель 1.5.13 - Посмотрим на столбец 'address' В столбце слишком много уникальных значений, что без сомнений внесёт шум в нашу модель. Удалим этот столбец. 1.6 - Оценим нашу очищенную и улучшенную модель 2 - Выполнение примера второй части экзамена Задания в второй части состоит из нескольких пунктов. 2.1 - Отбора признаков. Нам необходимо определить, какие признаки имеют наибольшее влияние на классификацию объектов по возрасту недвижимости (building_age) и оставить только их для обучения. Могут остаться и все исходные признаки. Необходимо обосновать выбор признаков, оставленных для обучения. Однако в нашем случае признаки были отобраны уже на предыдущем этапе, но в можете просто еще раз продублировать всю последовательность действий в отчёте. Также можно обучить алгоритм и построить график важности признаков и показать, что все отобранные признаки влияют на конечный результат классификации. К сожалению мы не можем выполнить задание полностью без использования обучающей и тестовой выборки, так что вернёмся к этому пункту после выполнения 2.2. 2.2 - Разбиения данных на обучающую и тестовую выборку. Необходимо определить принцип разделения данных на обучающую и тестовую выборки. Даже если вы выбираете случайное разделение данных, необходимо обосновать выбор данного принципа. Чтобы разбить разбить данные на обучающую и тестовую выборку нам нужно сначала создать выборку ответов(матрицу ответов) Импортируем библиотеки для создания нужных нам выборок Создаём обучающую и тестовою выборку 2.1 - Продолжение отбора признаков Инструменты для машинного обучения градиентным бустингом мы возьмём из библиотеки xgboost, но вы можете использовать любую другую, например 'sklearn'. Если при попытки импорта библиотеки появляется ошибка, говорящая об отсутствии такой библиотеки, то нам нужно установить её при помощи pip install. Создаём экземпляр классификатора, обучающего модель по модели случайного леса Сохраняем predict(предсказание) в переменную Смотрим текстовый отчёт по показателям классификации Так-же мы можем воспользоваться accuracy_score для отображения точности модели, но для начала нам нужно импортировать его из библиотеки metrix Отберём признаки с помощью алгоритма и нарисуем график важности, чтобы определить силу влияния признаков(столбцов) на классификацию По графику важности признаков можно заметить, что признаки price_currency и listing_type не оказывают большого влияния на классификацию, значит, их можно удалить. Разбиваем новые данные на тестовою и тренировочную выборку 2.3 - Классификации объектов. Необходимо выбрать модель классификации недвижимости по возрасту недвижимости (building_age), обосновать выбор модели. Необходимо обучить модель на обучающей выборке и протестировать. Необходимо предоставить показатели точности работы выбранной модели и всех рассматриваемых. Импортируем необходимые для задачи классификации инструменты Создаём экземпляр класса Тренируем данные градиентным бустингом Сохраняем предсказание в переменную Смотрим текстовый отчёт по задачам классификации Отбираем признаки с помощью алгоритма 3.1 - Отбор признаков Необходимо определить, какие признаки имеют наибольшее влияние цены на недвижимость (price) и оставить только их для обучения. Могут остаться и все исходные признаки. Необходимо обосновать выбор признаков, оставленных для обучения. 3.2 Разбиение данных на обучающую и тестирующую выборки Необходимо определить принцип разделения данных на обучающую и тестирующую выборки. Даже если вы выбираете случайное разделение данных, необходимо обосновать выбор данного принципа. Нарисуем ящик с усами Посчитаем квантили и очистим datafram'ы от выбросов по квантилю Нарисуем ещё один ящик с усами Создадим выборку ответов Создаём новые обучающие и тестовые выборки 3.3 - Прогнозирование Импортируем из библиотеки xgboost метод градиентной регрессии Создадим модель обучения градиентной регрессии Тренируем модель градиентной регрессии Сохраняем финальную модель предсказания в переменную Вычисляем квадратных корень из оценки незаметного количества Выводим коэффициент детерминации
Источник: habr.com Комментарии: |
|