Предварительная обработка данных с помощью Python

Python

Автор: Афроз Чакуре

Перевод: сумасшедший технический ботаник

оригинал:к data science.com/data-pre pro…

Копирование без разрешения строго запрещено

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

机器学习流程图

Этапы предварительной обработки данных:

  1. Импортируйте необходимые библиотеки
  2. импортировать набор данных
  3. Обработка недостающих данных.
  4. Кодирование категориальных данных.
  5. Разделите набор данных на тестовые и обучающие наборы.
  6. Масштабирование функций.

Итак, давайте изучим эти шаги один за другим.

Шаг 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Класс может принимать следующие параметры:

  1. missing_values: это заполнитель для отсутствующих значений. все событияmissing_valuesбудет оцениваться. Мы можем дать ему целое число илиNaNнайти пропущенные значения.
  2. strategy: Это стратегия вменения — если «среднее», заменить пропущенные значения средним (столбец) по оси. Другие стратегии включают «медиану» (медиану) и «самую частую» (наиболее распространенную).
  3. 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 набора —

  1. X_train(матрица характеристик части поезда),
  2. X_test(часть матрицы тестовых признаков),
  3. Y_train(обучающая часть зависимой переменной, связанная с набором X и, следовательно, с тем же индексом),
  4. 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)

Итак, вы изучили основные этапы предварительной обработки данных.

Теперь вы можете попробовать применить эти методы предварительной обработки к некоторым реальным наборам данных.