Понятия, объясненные для новичков!

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

В этом руководстве я объясню концепции обучающих и тестовых данных, а также дам мини-демонстрацию того, как разделить данные с помощью Scikit-Learn в Python.

Сначала мы посмотрим, что я имею в виду под функциями, метками, данными обучения и тестовыми данными, чтобы лучше понять, как разбить информацию, которая у нас есть. Я создал набор данных игрушек, чтобы объяснить концепции. Приведенный ниже пример набора данных должен предоставить нам визуальный способ осмысления того, что нам нужно знать в нашем фрейме данных. В наборе данных об игрушках есть 4 столбца, в которых представлена ​​информация о весе собак в килограммах, росте в сантиметрах, уровне активности по шкале от 1 до 10 и, наконец, о длине их ушей, разделенных на две категории: короткие и длинные. Мы хотим выяснить, учитывая вес, рост и уровень активности собаки, будут ли у нее короткие или длинные уши. (Просто дружеское напоминание, что этот набор данных создан только для иллюстрации метода, он не основан на каких-либо реальных данных.)

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

При разделении данных X обычно обозначает функции, а y - метку.

Мы должны указать X и Y, как показано ниже, перед разделением данных.

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

Сначала мы импортируем наши зависимости numpy, pandas и scikit-learn.

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

Мы отобразим наш фрейм данных, чтобы лучше понять, что мы хотели бы предсказать или классифицировать. В этом случае я создал наш набор данных игрушек с нуля и преобразовал его во фрейм данных pandas.

df = pd.DataFrame(a, columns = ["weight", "height", "activity level", "short(0)or long(1) ears"])

Давайте определим X, преобразовав столбцы функций в массив и исключив столбец длины уха. Для y мы преобразуем только столбец метки в массив numpy. Обратите внимание, что масштабирование и нормализация данных перед разделением также важны, но не будут рассмотрены в этом посте.

X = np.array(df.drop(['short(0)or long(1) ears'],1))
y = np.array(df['short(0)or long(1) ears'])

Это хорошая привычка проверять форму или оси X и Y, чтобы убедиться, что формы расположены на одной линии и подходят для правильной посадки во время тренировки. В противном случае разные формы могут нарушить процесс обучения. Также может быть полезно распечатать X и y, чтобы увидеть, есть ли нужная нам информация. Давайте отобразим фигуры.

X.shape

Это можно просто сделать с помощью функции .shape.

y.shape

Теперь, когда у нас есть X и y. Мы можем разделить данные с помощью метода train_test_split Scikit Learn. Это делается для разделения данных для получения обучающих данных из X: часто называемых X_train, обучающих данных, соответствующих значениям X из y: y_train, и данных, которые будут использоваться для оценки или, другими словами, проверки того, как модель машинного обучения выполнил X_test и y_test.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

Test_size указывает, какая часть данных будет помещена в качестве тестовых данных. В этом случае 0,2 относится к% 20 данных. Это число должно быть от 0 до 1, что соответствует процентной шкале. Чем больше test_size, тем меньше данных для обучения будет разделено. Это может привести к тому, что в нашей модели не будет достаточно данных для обучения. Хотя для test_size нет жесткого набора правил, обычно это около 20% данных. Random_state - это число, определяющее внутреннее случайное целое число, которое будет использоваться для случайного разделения данных. Число, которое мы используем, не должно иметь большого значения для модели или прогнозов.

Вот и все! Разделите данные обучения и тестирования, готовые для обучения и тестирования вашего алгоритма машинного обучения.

Первоначально опубликовано на https://medium.com 28 декабря 2018 г.