Понятия, объясненные для новичков!
Машинное обучение - новая горячая область науки о данных. Для поиска решений многих проблем можно использовать всевозможные алгоритмы машинного обучения, начиная от анализа настроений и прогнозирования цен на акции и заканчивая классификацией болезней с использованием изображений мозга. Данные, которые передаются в алгоритм, важны для формирования точности результата. В машинном обучении крайне важно иметь данные для обучения и тестирования, которые должным образом разделены на функции и метки, чтобы иметь возможность иметь модели, обеспечивающие хорошие прогнозы.
В этом руководстве я объясню концепции обучающих и тестовых данных, а также дам мини-демонстрацию того, как разделить данные с помощью 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 г.