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

Эффективные данные для обработки данных для моделей машинного обучения.

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

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

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

Шаг 1: Импорт библиотек обучения машин

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

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

Здесь мы использовали ключевое слово «как», чтобы обратиться к этой библиотеке/модулям с использованием данного имени. (Псевдоним)

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

dataset = pd.read_csv("Data.csv")

Здесь, используя метод Pandas (Read_CSV), мы смогли импортировать файл CSV.

Примечание Что в машине обучения Lingo X относится к функции матрицы, а Y относится к матрице метки (вывод)

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

X = dataset.iloc[:, :-1].values

y = dataset.iloc[:, -1].values

Мы использовали метод ILOC на DataFrame для извлечения значений. Метод ILOC может быть использован таким образом:

df.iloc [,].

**Примечание: ** The: в Python выбирает все записи и: -1 в Python выбирает все записи, кроме последних. Таким образом, например, в X, мы присваивали все строки и все столбцы, кроме последнего в наборе данных.

Метод .values возвращает numpy представление dataframe.

Шаг 3: глядя на пропущенные данные

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

  • Принимая среднее значение для всех ценностей в столбце и заменяя недостающие данные со средним значением.

  • Принимая медиану всех ценностей в столбце и замена отсутствующих данных со средним значением.

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

Мы можем использовать класс SimpleImputer от Sklearn.impute, чтобы легко сделать эту задачу.

from sklearn.impute import SimpleImputer


# Creating an object from SimpleImputer class.

imputer = SimpleImputer(missing_values=np.nan, strategy="mean")

SimpleImputer может предпринять несколько параметров:

  1. SPACK_VALUES: все указанные вхождения будут вменены.

  2. Стратегия: Стратегия вменения. Если установлено значение, то он заменяет отсутствующие значения, используя среднее вдоль каждого столбца. ( можно использовать только с числовыми данными )

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

imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])

Мы также можем сделать выше 2 строки в одной строке, как:

X[:, 1:3] = imputer.fit_transform(X[:, 1:3])

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

В наборе данных мы могли бы встретить записи, которые не такие цифры, как тексты. Хотя мы можем понять контекст текста, алгоритмы, к сожалению, не могут полагаться исключительно на цифры. Чтобы преодолеть эту проблему, мы « кодировать » данные.

В первом столбце все записи находятся в виде текста. Это пример категориальных данных.

Итак, как конвертировать категорические данные в числовые данные? Есть 2 способа:

  1. Целочисленное кодирование: Каждая уникальная категория присваивается целочисленное значение.
  2. Одно горячее кодирование: каждая уникальная категория назначена нового столбца и содержит только 0 или 1, соответствующую столбцу, которое она была размещена.

Пример для одностороннего кодирования, кредиты @dan_s_becker в Twitter.

Кодирование функций (независимая переменная)

Если мы используем целочисленное кодирование для категориальных данных, значения, такие как 0, 1, 2 и т. Д., Кодированы к этим текстам. Это, безусловно, понятно алгоритмами Но, есть поймать. Скажите, если в США назначено число 0, Китай до 1, Япония до 2 тогда мы не косвенно говорим, что Япония больше чем Китай или США? Но ясно, это не намерение здесь. Итак, это не применимо здесь.

Вместо этого мы должны использовать одно горячие кодировки.

Мы можем импортировать их. Нам придется использовать 2 класса.

from sklearn.compose import ColumnTransformer

from sklearn.preprocessing import OneHotEncoder

Первый шаг состоит в том, чтобы создать объект ColumnTransformerClass.

ct = ColumnTransformer(transformers=[("encoder", OneHotEncoder(), [0])] , remainder="passthrough")

В первом аргументе мы должны указать 3 вещи:

  1. Вид трансформации. (Здесь он кодирует и, таким образом, мы используем Encoder)

  2. Вид кодировки, которую мы хотим выполнить (здесь, мы хотим, чтобы одна горячая кодировка)

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

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

Теперь мы должны Fit ** и преобразовать. * *

X = ct.fit_transform(X)

Вот проблема. CT.FIT_TRANSFORM (X) не возвращает Numpy Array, и мы Должен Имейте это как Numpy Array, поскольку модели обучения машин ожидают матрицы Numpy Array.

X = np.array(ct.fit_transform(X))

Кодирование меток (зависимая переменная)

Если этикетки содержат двоичные значения, такие как «Да», «Нет», перейдите на целочисленное кодирование. Он преобразует эти строки на 1 или 0.

Для этого мы должны импортировать другой класс.

from sklearn.preprocessing import LabelEncoder

Теперь мы должны создать объект этого класса и после его создания, мы можем применить метод fit_transform.

le = LabelEncoder()

y = le.fit_transform(y)

Нам не нужно преобразовать его в Numpy Array AS Y – зависимый вектор переменной, и для него нет принуждения, чтобы он был небольшой массивом.

Шаг 5: Разделение набора данных на набор тренировок и тестирования.

Весь набор данных теперь будет разделен на наборы обучения и тестирования. Но почему мы должны разделить данные?

Целью учебных данных состоит в том, чтобы выучить шаблоны из данных. Модель будет выяснить любой шаблон/корреляцию в учебном наборе. Учебный набор используется для тренировки модели, а также используется для настройки параметра.

Целью набора тестирования состоит в том, чтобы заметить, как модель выполнит данные о том, что она не обучена. Это используется для получения оценки производительности модели. Набор тестирования используется ни для модели для моделирования, а также для настройки параметра.

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

Для выполнения этой операции мы должны импортировать Test_train_Split из библиотеки в Scikit под названием Model_Selection

from sklearn.model_selection import train_test_split

Для этого нам придется создавать 4 переменных, а именно:

X_train : Учебная часть матрицы функций

X_test : Тестирование части матрицы функций

Y_train : Учебная часть зависимых переменных, соответствующих X_Train наборы, и, таким образом, они тоже имеют одинаковые индексы

Y_test : Тестирование части зависимых переменных, соответствующих множествам X_Test, и, таким образом, они также имеют одинаковые индексы.

Все 4 переменных выше будут назначены на rain_test_split.

Немногие из параметров для Train_test_split:

  1. Массивы (здесь, х и у)

  2. test_size: если пройдено 0.2, он назначил бы 20% набора данных на набор тестирования и оставшиеся 80% на набор тренировок.

    X_train, x_test, y_train, (x, y, .2)

Шаг 6: Функция Масштабирование

Этот шаг не является обязательным для многих моделей машинного обучения.

Почему нам нужно сделать это?

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

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

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

Существует 2 самых заметных метода для масштабирования данных:

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

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

Стандартизация поставит все значения функции в диапазоне [-3, 3].

Нормализация поставит все значения функции в диапазоне [0, 1].

Итак, какой выбрать?

Ну, нормализация рекомендуется использовать, когда у вас есть нормальное распределение в большинстве ваших функций. Это очень полезно только для конкретного случая. Стандартизация – это больше общего случая. Это работает все время.

Итак, давайте пойдем на стандартизацию. Для этого мы должны импортировать стандарты класса из библиотеки Scikit.

from sklearn.preprocessing import StandardScaler

#creating an object of that class
sc = StandardScaler()

Процесс сейчас интуитивно понятен и просто.

Мы должны соответствовать и преобразовывать x_train.

Примечание что стандартный планшет должен быть первым соответствовать и трансформировать Учебный набор Но это должно только трансформировать Тестовый набор. Это сделано для предотвращения информации о распределении теста, установленного от утечки в модель.

X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

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

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

Оригинал: “https://dev.to/professorlogicx/efficient-data-preprocessing-for-machine-learning-models-37lf”