Привет всем! Сегодня в этой статье мы собираемся создать проект под названием Iris Classification, и я постараюсь объяснить каждый шаг. В этом проекте мы начнем со сбора данных и шаг за шагом развернем нашу модель на Heroku.
Что-то вроде этого:
Я знаю, что в большинстве руководств для начинающих не показано, как сохранить модель и развернуть модель на облачных платформах, таких как Heroku. И тогда вам придется искать и смотреть различные видео или учебные пособия только для развертывания. Итак, я собираюсь сделать учебник для каждого проекта, начиная с уровня 0, что означает от части, где мы собираем наши данные, до той части, где мы бесплатно развертываем нашу собственную модель в облаке.
Если вам нужны хорошие идеи для проекта машинного обучения. Посмотрите мою эту статью.
Если вы хотите проверить репозиторий, вот ссылка на GitHub.
О наборе данных:
В этом проекте мы собираемся классифицировать цветок ириса как Setosa, Virginica или Versicolor. В этом наборе данных 150 строк и 5 столбцов, 4 столбца — это столбцы функций, а 1 столбец — целевой столбец.
Набор данных состоит из:
- 150 образцов
- 3 ярлыка:виды ириса (Iris setosa, Iris virginica и Iris versicolor)
- 4 характеристики: длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка в см.
Шаг 1: Подготовка данных
Импортируйте необходимые библиотеки, прочитайте набор данных из csv, поймите и подготовьте набор данных
Импортировать библиотеки для чтения и понимания набора данных
import pandas as pd data = pd.read_csv('data/raw/iris.data') data.describe()
ВЫВОД:
мы использовали data.describe() для просмотра статистического описания данных, которые содержат:
- count = Подсчитать количество не-NA/null наблюдений.
- среднее значение = среднее значение
- std = стандартное отклонение наблюдений.
- min = Минимум значений в объекте.
- 25% = Значение меньше 25% значений
- 50% = Значение меньше 50% значений
- 75% = Значение меньше 75% значений
- max = Максимум значений в объекте.
Как мы видим в выводе функции описания, количество ненулевых значений одинаково. Мы также можем проверить, есть ли в данных нулевые значения, используя isnull().
Давайте также проверим тип данных наших столбцов с помощью data.dtypes.
data.dtypes
ВЫВОД:
Все четыре столбца функций имеют тип плавающего, но целевой столбец имеет тип объект. Итак, для обучения модели мы должны преобразовать тип объекта либо в тип int, либо в тип категории, потому что модели классификации не работают с типом данных объекта.
Для этого набора данных давайте изменим типы данных столбца видов на тип category.
data['species'] = data['species'].astype('category')
Теперь давайте снова проверим типы данных
data.dtypes
ВЫХОД:
Как видите, столбец видов теперь преобразован в category dtype и может использоваться для дальнейшей обработки.
Шаг 2: Разделите набор данных
Мы должны разделить набор данных на набор данных для обучения и набор данных для тестирования.
Итак, сначала разделите столбцы на feature и class или X и y.
X = data.drop('species', axis=1) y = data['species']
если вам интересно, что внутри X и y, вы можете проверить с помощью X.head() и у.голова()
Теперь нам нужно разделить наши данные на обучение и тестирование, для этого мы можем использовать scikit-learn.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
Если вы не знаете о train_test_split, прочитайте эту статью
мы завершили этапы подготовки данных.
Следующим шагом является создание нашей модели и выполнение обучения и тестирования, о которых я напишу в следующей части этой статьи.
Ссылка на следующую часть будет доступна в ближайшее время!