Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
9144.pdf
Скачиваний:
18
Добавлен:
25.11.2023
Размер:
2.34 Mб
Скачать

Лабораторная работа №2

Решение задач классификации машинного обучения

Теоретические сведения

Не заметить, как быстро растет общий объем собираемых метрик, просто невозможно. Увеличивается не только частота с которой автоматические системы собирают данные, пропускная способность хранилищ данных, но и сам набор метрик, которые мы можем использовать. Эта тенденция наиболее явно выражена в IoT, но и другие отрасли могут похвастаться огромным набором источников данных — публичных или доступных по специальной подписке.

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

Машинное обучение (ML) — это, по сути, та область компьютерных наук, с помощью которой компьютерные системы могут придавать смысл данным точно так же, как это делают люди. Проще говоря, ML — это тип искусственного интеллекта, который извлекает шаблоны из необработанных данных, используя алгоритм или метод. Основная задача ML

— дать возможность компьютерным системам учиться на собственном опыте без явного программирования или вмешательства человека.

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

Машинное обучение сейчас используется не только корпорациями уровня Microsoft и Google, даже небольшие компании могут воспользоваться преимуществами, которые дает качественный анализ данных или система рекомендаций. Если до недавнего времени применение подобных методов требовало найма программистов, аналитиков, датасайентистов, то сейчас на рынке появляются сервисы и приложения для машинного обучения, которые позволяют в более дружелюбной форме, с использованием графического интерфейса, обрабатывать данные и строить предсказательные модели. Использовать их способен даже человек с минимальными знаниями в этой области.

Машинное обучение с помощью Python

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

Синтаксис Python имеет больше общего с человеческим языком, чем с машинным. В Python нет надоедливых фигурных скобок, которые только сбивают с толку. Моя коллега из отдела обеспечения качества, которая не имеет отношения к программированию, может написать качественный код на Python в течение дня.

26

Не удивительно, что Python выбирают создатели библиотек, работы которых в последствии используют специалисты по обработке данных и аналитики для решения своих задач. Далее мы обсудим эти must-have библиотеки для машинного обучения.

1. Numpy

Знаменитая библиотека для анализа числовых данных. Она способна на многое: от вычисления медианы распределения данных до обработки многомерных массивов.

2. Pandas

Тот самый инструмент, который поможет вам обрабатывать CSV файлы.

3. Matplotlib

Библиотека для визуализации данных, например дата фреймов Pandas. 4. Seaborn

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

5. Scikit-Learn

И, наконец, самое главное — библиотека с алгоритмами и другими необходимыми вещами для машинного обучения.

6. Tensorflow и Pytorch

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

Практическая часть

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

Для этого:

Сформируем тренировочный датасет в виде датафреймов Pandas (наша статья об этой библиотеке).

Обучим модель из библиотеки Sklearn на получившемся датасете.

Напишем код на Python для дальнейших предсказаний (прочитайте статью про Pythonминимум для занятий data science).

В исходной таблице собраны данные о тысяче туристов: возраст, доходы, предпочтения. Ключевая колонка называется target — это город, который конкретный турист выбрал в итоге для поездки. Наша модель научится предсказывать именно её значение — уже для новых туристов.

Основная часть таблицы содержит только числа, что удобно для модели. Например, если в колонке city_Екатеринбург стоит единица, а в остальных колонках, названия которых начинаются с city_, — нули, это означает, что этот турист екатеринбуржец.

Читаем данные

27

Данные нужно прочитать из файла и преобразовать в подходящий для работы формат. Для этого в колабе добавим новую кодовую ячейку с помощью кнопки «+ Код» вверху и напишем в ней:

В первой строчке мы импортировали популярную библиотеку Pandas, предназначенную для работы с табличными данными. Чтобы каждый раз в коде не писать её полное название, по сложившейся в data science традиции будем использовать для неё короткое имя pd.

Во второй строке мы создали переменную с названием df. Далее, после знака «равно», Pandas, под коротким именем pd, с помощью функции .read_excel () прочитала файл trips_data_for_ML.xlsx, который мы загрузили в наш колаб-ноутбук. Параметр index_col мы приравняли к нулю — это означает, что индексной колонкой (той, где идут номера строк) в нашей новой таблице df мы назначили колонку под номером 0 из прочитанной Excel-таблицы.

Наконец, в третьей строке мы применили к нашей переменной df метод .head ().

Он показывает первые строки свежесозданного датафрейма (по умолчанию 5). Этим удобно пользоваться, если нужно убедиться, что данные прочитались правильно.

Создаём датасет

Теперь датафрейм с нашими данными надо превратить в датасет, на котором модель машинного обучения сможет тренироваться.

Для этого разобьём df на две части, которые обозначим как X и y. Идея в том, чтобы в Х содержались все данные туристов, кроме колонки target, то есть выбранных ими городов, а в y — только колонка target c этими городами.

Это похоже на задачник: в одной, большой части находятся условия задач (данные туристов), а в другой части, поменьше, — правильные ответы (города, которые они выбрали). Модель будет учиться именно по этому «задачнику».

Добавляем ячейку кода и пишем:

В первой строчке мы создали переменную X. В неё мы записали часть нашего датафрейма df, из которого специальным методом .drop () удалили колонку 'target'. Параметр axis переводится как «ось», и он равен единице. Это означает, что колонку 'target' мы выкинули по второй, вертикальной, или колоночной оси, то есть целиком.

28

Во второй строчке мы создали переменную y и записали туда часть переменной df, а конкретно — колонку с названием 'target'.

Теперь наши исходные данные поделены на два датафрейма, готовых для обучения модели.

Создаём модель

Sklearn (или scikit-learn) — пожалуй, самая популярная библиотека для машинного обучения на языке Python и вторая главная библиотека дата-сайентиста после Pandas.

Вэтой строчке кода из раздела ensemble библиотеки sklearn мы импортировали конструктор моделей-классификаторов типа Random Forest («случайный лес») в наш проект.

Впеременную с названием model мы записали модель типа Random Forest Classifier с параметрами по умолчанию (в скобках пусто). Эта переменная и есть наша модель машинного обучения.

Обучаем модель

Да, вот так всё просто — в одну строчку. Мы показываем модели набор данных X, который, как мы уже точно знаем, дал нам столбец значений y. И просто говорим ей чтото вроде: «Если X, то y. Всё понятно?» Если модели «всё понятно», она выдаст в ответ целую пачку своих параметров, в смысле которых мы не будем сегодня разбираться:

Пора приступать к предсказанию.

Турист — это словарь

С точки зрения нашей модели любой турист выглядит примерно так:

29

Переменная example содержит словарь — структуру данных языка Python, состоящую из пар «ключ — значение». Видим, что ключу 'age' в нашем словаре соответствует значение [31], и догадываемся, что здесь имеется в виду возраст: 31 год. И поскольку ключу 'city_Краснодар' соответствует единица, а всем остальным city-ключам нули, то делаем вывод, что наш новый турист — из Краснодара.

Скопируйте код выше в новую ячейку и запустите его. Тем самым вы одновременно и объявите переменную example, и поместите в неё словарь, описывающий нового туриста.

Предсказание

Эта строка кода преобразует словарь example в pandas-формат DataFrame и помещает его в переменную example_df.

Мы запустили метод .predict () для нашей модели model на основе данных из переменной example_df. Куда же, по мнению модели, поедет 31-летний краснодарец, любитель шопинга и автомобилей? Это узнают только те, кто создал модель вместе с нами!

Меняя возраст, город и другие параметры в значениях словаря example, можно получать прогнозы модели для других туристов. Поместите все три команды в одну

30

ячейку и запускайте её на выполнение каждый раз, когда вы меняете данные и вам нужно очередное предсказание.

Вывод

В ходе работы был сформирован обучающий датасет, разбив на две части датафрейм Pandas, натренировали на нём модель Random Forest из библиотеки Sklearn и даже сделали первое предсказание, написав код словаря на языке Python.

31

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]