Автор: Афроз Чакуре
Перевод: сумасшедший технический ботаник
оригинал:к data science.com/data-pre pro…
Копирование без разрешения строго запрещено
В основе машинного обучения лежит обработка данных. твойИнструменты машинного обучения должны быть такими же хорошими, как и качество данных. В этой статье рассматриваютсячистые данныеразличных шагов. Ваши данные должны пройти несколько этапов, прежде чем их можно будет использовать для прогнозирования.
Этапы предварительной обработки данных:
- Импортируйте необходимые библиотеки
- импортировать набор данных
- Обработка недостающих данных.
- Кодирование категориальных данных.
- Разделите набор данных на тестовые и обучающие наборы.
- Масштабирование функций.
Итак, давайте изучим эти шаги один за другим.
Шаг 1. Импортируйте необходимые библиотеки
Сначала вам нужно загрузить этот набор данных:Data.csv
Каждый раз, когда мы создаем новую модель, необходимо импортировать Numpy и Pandas. Numpy — это библиотека, содержащая математические функции для научных вычислений, а Pandas используется для импорта наборов данных и управления ими.
import pandas as pd
import numpy as np
Здесь мы импортируем библиотеки pandas и Numpy и называем их «pd» и «np» соответственно.
Шаг 2. Импортируйте набор данных
Набор данных предоставляется в формате .csv. Файлы CSV хранят табличные данные в текстовом формате. Каждая строка файла представляет собой запись данных. Мы используем метод read_csv библиотеки pandas для чтения локального файла CSV каккадр данных.
dataset = pd.read_csv('Data.csv')
После тщательного изучения набора данных мы создадим матрицу признаков в наборе данных (X) и вектор зависимости (Y) с соответствующими наблюдениями. Мы читаем столбцы с помощью iloc pandas (используется для фиксации индекса для выбора), который принимает два аргумента — [rowselection, columnselection].
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 3].values
Шаг 3. Обработка отсутствующих данных
Данные, которые мы получаем, редко бывают однородными. Иногда данные могут отсутствовать, поэтому их необходимо обработать, чтобы не ухудшить производительность модели машинного обучения.
Нам нужно заменить отсутствующие данные всем столбцом среднего или медианного значения. Для этого мы будем использоватьsklearn.preprocessing
библиотека, которая содержитImputer
класс, который поможет нам разобраться с отсутствующими данными.
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
Имя нашего объектаimputer.Imputer
Класс может принимать следующие параметры:
-
missing_values: это заполнитель для отсутствующих значений. все события
missing_values
будет оцениваться. Мы можем дать ему целое число илиNaN
найти пропущенные значения. - strategy: Это стратегия вменения — если «среднее», заменить пропущенные значения средним (столбец) по оси. Другие стратегии включают «медиану» (медиану) и «самую частую» (наиболее распространенную).
- axis: можно указать 0 или 1, 0 вставляет вдоль столбца, 1 вставляет вдоль строки.
теперь будетimputer
Объекты соответствуют нашим данным.
imputer = imputer.fit(X[:, 1:3])
затем используйтеtransform
метод заменяет пропущенные значения средним значением столбца.
X[:, 1:3] = imputer.transform(X[:, 1:3])
Шаг 4: Кодирование категориальных данных
Любая переменная, не являющаяся количественной, является категориальной. Примеры включают цвет волос, пол, область обучения, работу в университете, политическую принадлежность, инфекционный статус и т. д.
Но почему код?
Мы не можем использовать такие значения, как «мужской» и «женский» в математических уравнениях модели, поэтому эти переменные нужно кодировать как числа.
С этой целью начнем сsklearn.preprocessing
импорт библиотекиLabelEncoder
класс и создатьLabelEncoder
объект классаlabelencoder_X
. Затем используйте категориальные функцииfit_transform
метод.
После кодирования необходимо выделить переменные в одном столбце, для этого будем использоватьsklearn.preprocessing
в библиотекеOneHotEncoder
своего рода.
Горячее кодирование
Горячее кодирование преобразует категориальные признаки в формат, более подходящий для алгоритмов классификации и регрессии.
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
Шаг 5. Разделите набор данных на обучающие и тестовые наборы.
Теперь мы разделяем данные на две группы, одну для обучения модели, называемуюОбучающий набор, еще один набор для тестирования производительности модели, называемыйтестовый набор. Их соотношение обычно составляет 80/20. Для этого мы импортируемsklearn.model_selection
библиотекаtrain_test_split
метод.
from sklearn.model_selection import train_test_split
Теперь для построения тренировочного и тестового наборов мы создадим 4 набора —
- X_train(матрица характеристик части поезда),
- X_test(часть матрицы тестовых признаков),
- Y_train(обучающая часть зависимой переменной, связанная с набором X и, следовательно, с тем же индексом),
- Y_test(Проверяет часть зависимой переменной относительно набора тестов X, поэтому также проверяются одни и те же индексы).
мы назначим ихtest_train_split
, который принимает параметрыarrays
(Х и Y)test_size
(Укажите соотношение для разделения набора данных).
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
Шаг 6: Масштабирование функций
Большинство алгоритмов машинного обучения используют разницу между двумя точками данных в своих вычислениях.Евклидово расстояние. следовательно,Особенности высокой амплитуды в вычислении расстоянийВеса в будут выше, чем у признаков с низкой величинойтяжелее. Чтобы избежать этой функции, используйте нормализацию или нормализацию Z-оценки. Это делается с помощьюStandardScaler
своего родаsklearn.preprocessing
завершить.
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
Кроме того, мы будем конвертироватьX_test
коллекций, адаптируя и трансформируяX_train
собирать.
Функция преобразования преобразует все данные в один и тот же нормализованный масштаб.
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
Итак, вы изучили основные этапы предварительной обработки данных.
Теперь вы можете попробовать применить эти методы предварительной обработки к некоторым реальным наборам данных.