«Привет, мир» в науке о данных и машинном обучении

Часто в информатике есть (привет, мир) отправная точка в новом языке программирования, технике или фреймворке. В Data Science и Machine Learning (в основном в Machine Learning) hello world - это классификация задач с использованием набора данных Iris (ссылка).

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

В наборе данных Iris проблема классификации состоит в том, чтобы классифицировать каждый цвет по типу: Iris Setosa, Iris Versicolour или Iris Virginica. Примером паттерна является вектор: [5.1, 3.5, 1.4, 0.2] с четырьмя элементами / характеристиками. Первый признак - длина чашелистика в см, второй признак - ширина чашелистика в см, третий - длина лепестка в сантиметрах и четвертый признак - ширина лепестка в см.

Для написания нашего привет, мир мы будем использовать Jupyter Noteboo k, Python 3 и Scikitlearn. Процесс можно разделить на три этапа: обработка данных, поезд модели и проверка модели.

[1ª Шаг] Обработка данных

На этом этапе нам нужно загрузить набор данных Iris для обучения и тестирования модели машинного обучения. В этом руководстве мы будем использовать набор данных Iris, предоставленный Scikitlearn. В этом наборе данных есть ваши данные, готовые для использования в модели машинного обучения.
Сценарии Python для этого:

После выполнения этой командной строки у нас есть все шаблоны и метки набора данных Iris. Чтобы узнать, какой размер набора данных, вы выполняете следующие сценарии:

Первый вывод - (150, 4), это соответствующие 150 узоров (50 для класса Iris setosa, 50 для класса Iris versicolour и 50 для класса Iris virginica), каждый узор с четырьмя элементами. Когда этот набор данных деления одинаков для каждого класса, это называется сбалансированным набором данных. Это облегчает (не всегда) тренировочный процесс. Второй результат - (150,), это длина вектора меток и состоит из: [0] для представления метки Iris setosa, [1] для представления метки Iris setosa и [2] для представления метки Iris versicolour.

Для обучающей и тестовой модели необходимо использовать разные образцы. Один простой способ - разделить набор данных на два образца: образец поезда и образец теста. Сценарий python для этого:

Параметр test_size отвечает за определение пропорции паттернов для каждой выборки (обучающей и тестовой). В этом случае мы используем значение 0.3 для test_size, что составляет 30% от всех шаблонов для make sample test.

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

[2ª Шаг] Обучите модель машинного обучения

На этом этапе мы обучаем модель с помощью Sckitlearn. Очень популярной моделью машинного обучения является KNN (k-ближайших соседей) (ссылка). Эта модель является необучаемой и непараметрической (нет существующих параметров для соответствия), также это обучение на основе экземпляров, нет процесса обучения модели, ваш прогноз основан на расстоянии (например, евклидовом расстоянии) для каждого экземпляра. Основная идея KNN состоит в том, чтобы классифицировать новый паттерн для метки, которая чаще встречается у K соседей. Благодаря вашей простоте, KNN можно считать лучшей моделью для начинающих в машинном обучении и науке о данных.

Скрипт python для использования KNN через Scikitlean:

Эти скрипты создают модель через KNeighborsClassifier. Параметр «n_neighbors» отвечает за определение того, сколько экземпляров в образце поезда с малым расстоянием для нового экземпляра (шаблона) используется для классификации.

Для обучения модели машинного обучения с использованием Scikitlearn используется следующий скрипт Python:

На выходе отображаются все параметры модели. Подробнее об этом параметре вы можете узнать здесь.

Теперь у нас есть модель, и мы можем предсказывать новые закономерности.

[3ª Шаг] Модельный тест

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

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

На выходе у нас есть оценка значения: 0,97777. Другими словами, модель KNN правильно предсказывает 97% тестовых выборок и является очень хорошей моделью для задачи предсказания класса в наборе данных Iris.

Резюме

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

# Через Scikitlearn для всех шагов нам понадобится всего несколько строк скрипта;

# Модель KNN проста и не существует параметров для соответствия

Вы можете визуализировать скрипт, использованный в этом посте, через github.

P. S.

Это мой "привет, мир" в блоге Medium