Рубрики
Без рубрики

Предварительная обработка данных

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

Автор оригинала: Shubham Sayon.

Вступление

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

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

Шаги, участвующие в предварительно обработке данных в машинном обучении

Когда дело доходит до машинного обучения, предварительная обработка данных включает в себя следующие шесть шагов:

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

Давайте погрузимся глубоко в каждый шаг один за другим.

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

❖ Импорт необходимых библиотек

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

Библиотеки, которые мы будем использовать в этом руководстве:

Осевать

Numpy – это библиотека Python, которая позволяет выполнять численные расчеты. Подумайте о линейной алгебре в школе (или университете) – Numpy – библиотека Python. Это о Матрицы и векторы – И делать операции над ними. В основе Numpy является основным типом данных, называемым Numpy Array.

Чтобы узнать больше о Numpy Library, пожалуйста, обратитесь к нашему учебнику здесь.

Панда

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

Вы можете обратиться к нашему Плейлист здесь У кого многочисленные учебники на библиотеках Пандас.

Matplotlib.

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

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

Итак, давайте посмотрим на то, как мы можем импортировать эти библиотеки в код, указанный ниже:

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

❖ Импорт набора данных

Как только мы успешно импортировали все необходимые библиотеки, нам тогда нужно импортировать необходимые DataSet Отказ Для этого мы будем использовать библиотеку Pandas.

Примечание:

  • Dataframes являются двумерными объектами данных. Вы можете думать о них как о столах со строками и столбцами, которые содержат данные.
  • Матрица функций используется для описания списка столбцов, содержащих Независимый Переменные, которые будут обработаны и включают в себя все линии в данном наборе данных.
  • Целевая переменная вектор используется для определения списка зависимый Переменные в существующем наборе данных.
  • Iloc Является ли индекром для PandaS DataFrame, который используется для выбора строк и столбцов по их расположению/позиции/индексу.

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

dataset = pd.read_csv('Data.csv')
x = dataset.iloc[:,:-1].values
y = dataset.iloc[:,-1].values
print(x)
print(y)

Выход:

[['Germany' 45.0 80000.0]
 ['Japan' 42.0 32000.0]
 ['India' 35.0 40000.0]
 ['Japan' 25.0 60000.0]
 ['Germany' 25.0 nan]
 ['India' 65.0 80000.0]
 ['Germany' nan 50000.0]
 ['Japan' 55.0 70000.0]
 ['Germany' 25.0 90000.0]
 ['India' 25.0 20000.0]]
['Yes' 'No' 'Yes' 'No' 'Yes' 'No' 'No' 'No' 'Yes' 'Yes']

❖ Проверка пропущенных значений

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

Есть пара способов, которыми мы можем обрабатывать недостающие данные.

Способ 1: Удалить конкретную строку, содержащую нулевое значение

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

Способ 2: замена отсутствующего значения со средним, режимом или средней

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

➥ Чтобы иметь дело с недостающими значениями, нам нужна помощь SimpleImputer класс Scikit - Учите библиотека.

Примечание

  • Fit () Метод Использует данные тренировок в качестве аргументов, которые могут быть одним массивом в случае безоговорочного обучения или двух массивов в случае контролируемого обучения.
  • трансформировать Метод возвращает самопроизводимый кадр данных, который состоит из преобразованных значений после применения функции, указанной в его параметре.

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

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer

dataset = pd.read_csv('Data.csv')
x = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(x[:, 1:3])
x[:, 1:3] = imputer.transform(x[:, 1:3])
print(x)

Выход:

[['Germany' 45.0 80000.0]
 ['Japan' 42.0 32000.0]
 ['India' 35.0 40000.0]
 ['Japan' 25.0 60000.0]
 ['Germany' 25.0 58000.0]
 ['India' 65.0 80000.0]
 ['Germany' 38.0 50000.0]
 ['Japan' 55.0 70000.0]
 ['Germany' 25.0 90000.0]
 ['India' 25.0 20000.0]]

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

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

➥ Категорические данные представляют значения в наборе данных, которые не являются числовыми.

Три наиболее распространенные подходы для преобразования категориальных переменных к числовым значениям являются:

  • Порядковый кодировщик
  • Одностороннее кодирование
  • Фиктивное переменное кодирование

В этой статье мы будем использовать Одно- горячая кодировка кодировать и LabelenCoder Класс для кодирования категориальных данных.

✨ одно горячее кодирование

Одно горячее кодирование берет столбец, которая имеет категорические данные, а затем разбивает столбец в несколько столбцов. В зависимости от того, какой столбец имеет какое значение, они заменяются на 1S и 0s.

В нашем примере мы получим три новых столбца, по одному для каждой страны – Индия, Германия и Японии. Для рядов с первой стоимостью столбца как Германия столбца «Германия» будет разделена на три столбца, так что первый столбец будет иметь «1», а два других столбца будут иметь «0». Аналогично, для строк, которые имеют первое значение столбца, как Индия, второй столбец будет иметь «1», а два других столбца будут иметь «0». А для строк, которые имеют первое значение столбца в качестве Японии, третий столбец будет иметь «1», а два других столбца будут иметь «0».

➥ Для реализации одностороннего кодирования нам нужна помощь Одинhotencoder класс Scikit - Учите библиотеки ‘ предварительная обработка модуль и ColumnTransformer класс составить модуль.

✨ Кодировка этикетки

В кодировке этикетки мы преобразуем не цифровые значения на номер. Например, в нашем случае последний столбец состоит из Да и Нет значения. Таким образом, мы можем использовать этикетку, чтобы убедиться, что каждый нет преобразован в 0, в то время как каждый да преобразуется в 1.

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

# import the necessary libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

from sklearn.preprocessing import StandardScaler

# import data set
dataset = pd.read_csv('Data.csv')
x = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(x[:, 1:3])
x[:, 1:3] = imputer.transform(x[:, 1:3])
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
x = np.array(ct.fit_transform(x))
le = LabelEncoder()
y = le.fit_transform(y)
print("Matrix of features:")
print(x)
print("Dependent Variable Vector: ")
print(y)

Выход:

Matrix of features:
[[1.0 0.0 0.0 45.0 80000.0]
 [0.0 0.0 1.0 42.0 32000.0]
 [0.0 1.0 0.0 35.0 40000.0]
 [0.0 0.0 1.0 25.0 60000.0]
 [1.0 0.0 0.0 25.0 58000.0]
 [0.0 1.0 0.0 65.0 80000.0]
 [1.0 0.0 0.0 38.0 50000.0]
 [0.0 0.0 1.0 55.0 70000.0]
 [1.0 0.0 0.0 25.0 90000.0]
 [0.0 1.0 0.0 25.0 20000.0]]
Dependent Variable Vector: 
[1 0 1 0 1 0 1 0 1 1]

❖ Разделение данных, установленного на набор и тестовый набор

После того, как мы имеем дело с отсутствующими данными и категорическими данными, следующий шаг – разделить набор данных в:

  1. Учебный набор: Подмножество набора данных, используемого для обучения модели обучения машины.
  2. Тестовый набор: Подмножество набора данных, используемого для проверки модели обучения машины.

Вы можете нарезать набор данных, как показано на диаграмме ниже:

Очень важно разделить данные, установленные правильно в набор тренировок и набор тестов. Как правило, это хорошая идея разделить данные, установленные в соотношении 80:20, так что 80-процентные данные находятся в учебном наборе, а 30-процентные данные в тестовом наборе. Однако расщепление может варьироваться в зависимости от размера и формы набора данных.

Осторожно: Никогда не тренируйтесь на тестовых данных. Например, если у нас есть модель, которая используется для прогнозирования, является ли электронная почта SPAM, и он использует тему, тело по электронной почте и адрес отправителя в качестве функций, и мы разделяем набор набора на набор на набор тренировок и тестовой установкой в соотношении 80-20 Затем после тренировки модели видно для достижения 99% точностью на обоих, то есть набор тренировок, а также набора теста. Обычно мы ожидали более низкую точность для тестового набора. Итак, как только мы посмотрим на данные еще раз, мы обнаруживаем, что многие примеры в тестовом наборе являются простыми дубликатами примеров в наборе обучения, потому что мы пренебрегали дублирующимися записями для того же спама. Поэтому мы не можем точно измерить, насколько хорошо наша модель отвечает на новые данные.

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

# import the necessary libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

from sklearn.preprocessing import StandardScaler

# import data set
dataset = pd.read_csv('Data.csv')
x = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(x[:, 1:3])
x[:, 1:3] = imputer.transform(x[:, 1:3])
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
x = np.array(ct.fit_transform(x))
le = LabelEncoder()
y = le.fit_transform(y)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1)
print("X Training Set")
print(x_train)
print("X Test Set")
print(x_test)
print("Y Training Set")
print(y_train)
print("Y Test Set")
print(y_test)

Выход:

X Training Set
[[1.0 0.0 0.0 38.0 50000.0]
 [1.0 0.0 0.0 25.0 58000.0]
 [1.0 0.0 0.0 45.0 80000.0]
 [0.0 0.0 1.0 25.0 60000.0]
 [0.0 0.0 1.0 42.0 32000.0]
 [0.0 0.0 1.0 55.0 70000.0]
 [1.0 0.0 0.0 25.0 90000.0]
 [0.0 1.0 0.0 65.0 80000.0]]
X Test Set
[[0.0 1.0 0.0 35.0 40000.0]
 [0.0 1.0 0.0 25.0 20000.0]]
Y Training Set
[1 1 1 0 0 0 1 0]
Y Test Set
[1 1]

Объяснение:

  • rain_test_split () Функция позволяет нам разделить данные, установленные на четыре подмножества, два для матрицы функций х I.E. x_train и x_test и два для зависимой переменной y I.E. y_train и y_test Отказ

    • x_train : Матрица функций для учебных данных.
    • x_test : Матрица функций для тестирования данных.
    • y_train : Зависимые переменные для учебных данных.
    • y_test : Независимая переменная для тестирования данных.
  • Он также содержит четыре параметра, так что:
    • Первые два аргумента предназначены для массивов данных.
    • test_size Для указания размера набора тестов.
    • Random_State используется для исправления установки семян для случайного генератора, чтобы всегда получить тот же результат.

❖ масштабирование функций

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

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

Стандартизация

Формула для стандартизации приведена ниже:

Нормализация

Формула для нормализации приведена ниже:

Одним из наиболее распространенных вопросов среди ученых данных является: «Должны ли мы использовать стандартизацию или нормализацию для масштабирования функций?»

Ответ: Выбор в использовании нормализации или стандартизации полностью зависит от задачи и используемого алгоритма. Нет строгого правил решать, когда нормализовать или стандартизировать данные.

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

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

# import the necessary libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

from sklearn.preprocessing import StandardScaler

# import data set
dataset = pd.read_csv('Data.csv')
x = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(x[:, 1:3])
x[:, 1:3] = imputer.transform(x[:, 1:3])
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
x = np.array(ct.fit_transform(x))
le = LabelEncoder()
y = le.fit_transform(y)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1)
sc = StandardScaler()
x_train[:, 3:] = sc.fit_transform(x_train[:, 3:])
x_test[:, 3:] = sc.transform(x_test[:, 3:])
print("Feature Scaling X_train: ")
print(x_train)
print("Feature Scaling X_test")
print(x_test)

Выход:

Feature Scaling X_train: 
[[1.0 0.0 0.0 -0.1433148727800037 -0.8505719656856141]
 [1.0 0.0 0.0 -1.074861545850028 -0.39693358398661993]
 [1.0 0.0 0.0 0.3582871819500093 0.8505719656856141]
 [0.0 0.0 1.0 -1.074861545850028 -0.2835239885618714]
 [0.0 0.0 1.0 0.1433148727800037 -1.8712583245083512]
 [0.0 0.0 1.0 1.074861545850028 0.2835239885618714]
 [1.0 0.0 0.0 -1.074861545850028 1.4176199428093568]
 [0.0 1.0 0.0 1.7914359097500465 0.8505719656856141]]
Feature Scaling X_test
[[0.0 1.0 0.0 -0.3582871819500093 -1.4176199428093568]
 [0.0 1.0 0.0 -1.074861545850028 -2.5517158970568423]]

Объяснение:

  • Первоначально нам нужно импортировать Стандартный планшет класс Scikit - Учите Библиотека, использующая следующую строку кода:

    • От Sklearn.Preprocessing Sharedscaler
  • Затем мы создаем объект класса стандартных классов.
    • SC ()
  • После этого мы подходим и преобразуем наборный набор данных, используя следующий код:
    • x_train [:. fit_transform (x_train [:, 3:])
  • Наконец, мы преобразуем тестовый набор данных, используя следующий код:
    • x_test [: ,. Преобразование (x_train [:, 3:])

Заключение

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

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

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

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: