Информация — это «масло 21 века, а аналитика — двигатель внутреннего сгорания». — Питер Зондергаард, старший вице-президент Gartner Research.

По моему мнению, у каждого Data Scientist есть свой набор методов работы с данными. У меня также есть свой способ работы с данными, и я хотел бы поделиться с вами шагами. Я буду использовать Python для демонстрации примеров.

Действия, которые необходимо выполнить перед применением любой модели к данным:

  1. Внимательно прочитайте описание проблемы.
  2. Импортируйте данные.
  3. Изучите структуру данных.
  4. Обработайте столбцы с ненужными данными.
  5. Обработка нулевых значений.
  6. Обработка доминирующих классов в категориальных функциях
  7. Обрабатывать дубликаты.
  8. Ищите выбросы.
  9. Преобразование DataType необходимых столбцов.
  10. Изучите тепловую карту корреляции.
  11. Проверьте наличие дисбаланса класса для целевой переменной.
  12. Масштабируйте данные для получения лучших результатов.
  13. Создание фиктивных переменных
  14. Изучение того, какую модель машинного обучения использовать в соответствии с данными.

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

  1. Изучение структуры наших данных:

Для объяснения я использую набор данных «Прогнозирование сердечно-сосудистых заболеваний».



импортировать pandas как pd
импортировать numpy как np
импортировать matplotlib.pyplot как plt
импортировать seaborn как sns
из PreprocessingUtils импортировать NullValues
из PreprocessingUtils импортировать UniqueValues
dt = pd.read_csv('train_values.csv')

DT.describe()

Для «числовых» функций функция description() предоставляет информацию о количестве строк и столбцов, среднем значении, стандартном отклонении, минимуме, квантилях (25%, 50% и 75%) и максимуме.

Эта функция по умолчанию исключает категориальные признаки. Итак, чтобы включить их, мы используем: dt.describe(include='all'). Здесь для категориальных функций мы получаем такую ​​информацию, как количество, уникальные классы, топ и частота.

дт.информация()

info() предоставляет такую ​​информацию, как диапазон наблюдений, общее количество столбцов, тип данных каждого столбца, а также сообщает нам, содержит ли столбец какое-либо значение NULL или нет. Это также дает нам количество столбцов с определенным типом данных.

дт.голова()

дт.хвост()

Вышеуказанные две функции показывают нам 5 верхних строк и последние 5 строк соответственно.

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

2. Обработайте столбцы с ненужными данными:

Когда мы смотрим на наши данные, мы видим, что столбец «Id» не нужно сохранять. Потому что он содержит последовательные уникальные данные, которые не будут учитываться при построении нашей модели. Таким образом, мы можем удалить эти типы столбцов.

Например. Идентификатор, имя, идентификатор пассажира, идентификатор билета и т. д.

dt.columns

dt = dt.iloc[:,1:]

Приведенная выше строка кода выберет столбцы из индекса 1, таким образом удалив столбец «Id». Если мы хотим удалить определенные столбцы, мы должны использовать функцию drop(). Например.

dt.drop(['age','gender'], axis=1, inplace=True) #только для примера

ось = 1 означает удаление по столбцу, а ось = 0 означает удаление по строкам. Inplace = True будет отражать изменения в наборе данных.

3. Обработка нулевых значений:

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

дт.исна().сумма()

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

Если процент больше 50%, удалите эти столбцы. Пороговый процент не фиксирован. Мы также можем использовать порог 80% или любой другой порог в соответствии с нашим удобством. Приведенная ниже функция удалит столбцы, которые превысят порог нулевых значений. Здесь я использую «Набор данных прогнозирования цен на дома Kaggle» для объяснения.



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

4. Обработка доминирующих классов в категориальных признаках:

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

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

5. Обработка дубликатов:

Мы снова воспользуемся «Прогнозированием сердечно-сосудистых заболеваний» для демонстрации дубликатов.

6. Преобразование типа данных необходимых столбцов:

Если есть числовые столбцы, которые, по вашему мнению, следует преобразовать в категориальные, их следует преобразовать. Например. предположим, что у нас есть столбец для Пола, и у нас есть такие классы, как Мужской, который представлен (0), и класс Женский, который представлен (1). Здесь у нас всего 2 варианта пола. Пол не может быть 0,5, 0,3 или 0,2, он может быть либо 1, либо 0. Таким образом, для этих типов столбцов нам необходимо преобразование типа данных. Заявление о проблеме также содержит информацию о том, какие столбцы необходимо преобразовать.

dt.gender=dt.gender.astype('категория')
dt.cholesterol=dt.cholesterol.astype('категория')
dt.gluc=dt.gluc.astype('категория')
dt.smoke=dt.smoke.astype('категория')
dt.alco=dt.alco.astype('категория')
dt.active=dt.active.astype( «категория»)

7. Обработка выбросов:

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

В основном существует 3 метода обнаружения выбросов:

  1. Метод стандартного отклонения (среднее значение — 3 (стандартное отклонение)):

Если точка данных меньше (среднее — 3SD) или больше (среднее + 3SD), то она считается выбросом. Таким образом,

2. Метод межквартильного диапазона:

Пусть Q1 и Q3 — квантили. Если точка данных ниже (Q1–1,5 (IQR)) или выше (Q3 + 1,5 (IQR)), то эта точка данных считается выбросом.

3. Метод Z-оценки:

Если «z» равно ‹ -3 или больше +3, то эта точка данных считается выбросом.

8. Создание макетов:

Здесь мы создаем несколько столбцов для разных классов для столбца.

Например. У нас есть столбец с названием «Возрастная категория», и в нем у нас есть 3 класса, такие как: «Ребенок», «Подросток» и «Взрослый». Если в столбце есть классы «N», то всего создается фиктивный столбец «N-1». то есть столбец 1 будет «AgeCategory_Child», а другой столбец будет «AgeCategory_Teenager».

Почему мы не создали третий столбец?

Потому что эти 2 столбца также могут представлять 3-ю категорию, то есть взрослых. Когда оба столбца имеют значения 0 и 0 (не ребенок и не подросток), это косвенно означает, что человек является Взрослым.

# Создание манекенов
dt1=pd.get_dummies(dt,drop_first=True)
dt1.head()

9. Масштабирование данных:

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

  1. Минимальное и максимальное масштабирование:

2.Z-оценка:

Пример Min-Max Scaling в Python.

# Масштабирование данных
из sklearn.preprocessing import StandardScaler, MinMaxScaler
dt1_scaled=MinMaxScaler().fit_transform(dt1)
dt1_scaled=pd.DataFrame(data=dt1_scaled, columns=dt1.columns)
dt1_scaled.head()

Быть в курсе …. для предстоящей информации ….