Путь обучения машинному обучению очень долгий, но все же очень увлекательный!

Если вы новичок, этот блог - именно то, что вам нужно для начала! Обработка данных - это первый инструмент, который вы изучаете как специалист по машинному обучению. Давайте начнем!

Оглавление:

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

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

Необходимо правильно предварительно обработать ваши данные, чтобы модель машинного обучения, которую вы построите, можно было правильно обучить с использованием этих данных! Вначале этот шаг не покажется необычным. Однако, как только вы научитесь делать это эффективно, вы сможете быстро овладеть различными ветвями машинного обучения (ML).

Шаг 1] Импорт библиотек

Что такое библиотеки?

Библиотеки в Python - это значительный набор инструментов, функций и модулей, которые помогают облегчить желаемую задачу.

Библиотека Pandas: позволяет читать и извлекать наборы данных.

Библиотека Numpy: занимается математикой и расширенными 2D-массивами.

Библиотека Matplotlib: помогает нам визуализировать данные в виде гистограмм, линейных диаграмм, круговых диаграмм и т. д.

Чтобы с легкостью вызывать перечисленные выше библиотечные функции, мы переименовываем библиотеки, используя короткий синтаксис, например «np’ ’,« pd »,« plt ».

Эти библиотеки можно импортировать, выполнив следующие действия, как показано во фрагменте кода ниже:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Шаг 2] Импорт наборов данных

Что такое наборы данных?

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

В приведенном выше наборе данных есть 3 независимых переменных или характеристик: страна, возраст, зарплата и 1 зависимая переменная или целевая переменная : Приобретенный продукт, который может иметь двоичные выходные данные: Да или Нет, в зависимости от независимых переменных.

Для импорта набора данных нам потребуется функция библиотеки pandas.

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

Затем объявите две переменные, которые будут содержать функции и цели соответственно. В приведенном ниже фрагменте кода показано, как импортировать набор данных.

dataset=pd.read_csv("Path of your csv file location") 
#read_csv is function of pandas which helps in retrieving data in form of data frame.
X=dataset.iloc[:,:-1].values #X stores features
#iloc is a function of pandas which helps us split dataset based on its index location.
y=dataset.iloc[:,-1].values #y stores target

Шаг 3] Обработка недостающих данных

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

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

Таким образом, метод, который можно использовать для обработки отсутствующих данных, основан на усреднении всех записей в столбце с отсутствующими данными. Для этого мы импортируем известную библиотеку машинного обучения под названием sci-kit-learn. Он содержит инструменты предварительной обработки данных для обработки пропущенных значений. Мы будем использовать класс Imputer для обработки пропущенных значений.

Фрагмент кода:

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy='mean')
imputer.fit(X[:,1:3])// enter columns which contain real numbers
X[:,1:3]= imputer.transform(X[:,1:3])
print(X)

Шаг 4] Кодирование категориальных данных

Почти все наборы данных содержат столбец категориальных данных. Этот столбец строк необходимо обработать и преобразовать в действительные числа. Линейное расположение категорий может создать ложное впечатление о существующей взаимосвязи между данными, что приведет к ошибке в модели.

Таким образом, мы будем использовать метод горячего кодирования для преобразования категориальных данных в числовые данные. Однако мы преобразуем категориальные данные целевой переменной, содержащие да и нет, в 1 и 0, соответственно. . Это не повредит будущей точности данных.

#Encoding Independent variable
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder',OneHotEncoder(),[0])], remainder='passthrough')
X= np.array(ct.fit_transform(X))
print(X)
#Encoding Dependent Variable
from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
y= le.fit_transform(y)
print(y)

Как показано в приведенном выше фрагменте кода, для кодирования независимых категориальных данных используется OneHotEncoder, а для остатка устанавливается значение «сквозной», чтобы оставшиеся функции не отменялись. Результат преобразуется в массив с помощью NumPy.

Для кодирования зависимой переменной используется LabelEncoder из модуля scikit-learn.

Шаг 5] Масштабирование функций

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

Используются два метода: Стандартизация и нормализация.

Я буду использовать стандартизацию. (Использование любой техники не приводит к значительным изменениям на выходе.)

# Formula of Standardization 
# Xstand = [x- mean(x)]/standard_deviation(x)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X=sc.fit_transform(X)
print(X)

Масштабирование функции возвращает результат, масштабируемый в том же диапазоне.

Шаг 6] Разделение набора данных на обучающий и тестовый

Это важный шаг. Нам всегда нужно будет разделять данные на обучающие и тестовые наборы для обучения и тестирования нашей модели соответственно. Обычно 80% данных используется для обучающих данных, а 20% используется для тестирования модели на будущих данных тестирования.

Чтобы избежать переобучения, данные следует обучать на ограниченных тестовых данных. Однако, когда обучающего набора недостаточно, модель будет генерировать ошибки для тестового набора. Следовательно, выбор и разделение должны быть выполнены надлежащим образом.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0 )

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