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

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

1) Загрузка набора данных

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

  • Заголовок CSV: проверьте, есть ли у вашего CSV-файла заголовок. Если нет, вы можете назначить имена столбцов вручную. Это важно отметить, так как вам, возможно, придется указать, есть ли заголовок при загрузке набора данных.
  • Разделитель: вам также может потребоваться указать, какой разделитель используется в вашем файле. Хотя в большинстве файлов используется запятая (,), в некоторых файлах могут использоваться и другие разделители, такие как точка с запятой (;), табуляция (\t), пробел () или вертикальная черта (|).
  • Комментарии: Также важно проверить, есть ли у ваших данных комментарии. Обычно комментарии обозначаются решеткой (#) в файле csv. Вам также может потребоваться указать, может ли загрузчик ожидать комментарии, и символ, который используется для обозначения строки комментария.

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

  • Использование встроенной функции: open() — все, что требуется, — это передать имя файла в качестве параметра функции open(). Этот способ возвращает файл в строковом формате, где каждая строка хранится в виде строки. Режим, в котором вы хотите открыть файл, также можно указать, передав его в качестве параметра функции open(). Однако режим по умолчанию — «r», что означает чтение. Если файл не существует, это приводит к ошибке.
data = open('file.csv')
for row in data:
    print(row)
  • Использование стандартной библиотеки Python: Python оснащен модулем csv, который можно импортировать в начале программы. В этом модуле есть функция reader(), которую можно использовать для загрузки файлов данных и сохранения их в списке, который затем можно преобразовать в массив numpy для различных других целей.
import csv
import numpy as np
filename = 'sample.csv'
rawdata = open(filename,'r')
readr = csv.reader(rawdata, delimiter = ',')
data = list(readr)
data_nparray = np.array(data)
  • Загрузка CSV-файла с помощью NumPy loadtxt(): NumPy предоставляет две функции, с помощью которых мы можем загрузить наш набор данных. Первая функция, которую мы рассмотрим, — это loadtxt(), которая предназначена для более быстрого чтения просто отформатированных файлов. Также предполагается, что все данные имеют одинаковый формат и набор данных не имеет заголовка. Однако, если у набора данных есть заголовок, мы можем использовать параметр skiprows, который является необязательным, чтобы пропустить определенное количество первых строк. Эта функция возвращает данные в формате ndarray.
import numpy as np
rawdata = open('sample.csv','r')
data = np.loadtxt(rawdata, delimiter=",")
  • Загрузка CSV-файла с помощью NumPy genfromtxt():эта функция представляет собой сложную версию loadtxt() и предпочтительнее, когда данные отсутствуют. Мы можем указать, как обрабатывать отсутствующие значения, обрабатывать комментарии и т. д. Подобно предыдущему методу, эта функция также возвращает данные в форме ndarray.
import numpy as np
rawdata = open('sample.csv','r')
data = np.genfromtxt(rawdata, delimiter=',')
  • Загрузка CSV-файла с помощью Pandas. Этот метод обычно предпочтительнее, в основном потому, что Pandas предлагает множество функций для анализа данных, что является очень важной частью, если вы хотите построить хорошие модели. Функция read_csv() возвращает данные в виде DataFrame, который мы можем использовать для анализа данных.
import pandas as pd
data = pd.read_csv('sample.csv')

Мы также можем читать данные непосредственно из URL-адреса, используя пакет NumPy или Pandas.

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

  • Хотя это и не обязательно, я считаю, что просмотр ваших данных перед выполнением каких-либо операций предварительной обработки данных является одной из лучших практик. Мы можем сделать это с помощью функции head(), которая по умолчанию возвращает 5 верхних строк вашего набора данных. Мы также можем указать количество строк, которые мы хотим видеть.
import pandas as pd
data = pd.read_csv('sample.csv')
print(data.head()) 
#If we wish to see, say suppose 20 rows, then we simply modify the above statement as print(data.head(20))
  • Также необходимо знать количество доступных данных. Если у вас слишком мало данных (строк), алгоритм может плохо обобщаться, если экземпляров слишком много, обучение алгоритма может занять слишком много времени. Если функций (столбцов) слишком много, вам, возможно, придется применить какой-либо метод уменьшения размерности, чтобы ваш алгоритм не пострадал от проклятия размерности.
print(data.shape)
  • Вы также должны знать тип данных каждого атрибута. Поскольку машины не могут понимать текст, алгоритмам машинного обучения может потребоваться предварительная обработка ваших категориальных переменных, например, путем их горячего кодирования. Вы можете анализировать типы данных функций, используя свойство dtypes в Pandas.
print(data.dtypes)
  • Еще одним важным аспектом понимания данных является описательная статистика. Понимание среднего значения, медианы, моды, диапазона и IQR (межквартильный диапазон) необходимо, поскольку это помогает определить, есть ли какие-либо выбросы, искажены ли данные и т. д. IQR выгоден, поскольку на него меньше всего влияют выбросы и крайние значения.
print(data.describe)
  • Алгоритмы машинного обучения, такие как линейная регрессия и логистическая регрессия, сильно страдают от сильно коррелированных атрибутов. В подобных случаях необходимо отбрасывать те признаки, которые имеют высокую корреляцию с другими.
print(data.corr(method='pearson'))

3) Визуализация данных.Еще один и, возможно, самый быстрый способ понять данные — визуализировать их. Для этой цели можно использовать множество библиотек, таких как Pandas, Matplotlib, Seaborn и т. д. Графики в целом делятся на два типа — одномерные и двумерные. Одномерные графики помогают нам понять каждый атрибут по отдельности, в то время как двумерные графики показывают, как атрибуты взаимодействуют друг с другом.

  • Гистограмма. Гистограммы представляют собой одномерный график, который помогает нам независимо рассматривать распределение каждой функции. Распределение может быть гауссовым, асимметричным или даже экспоненциальным. Мы также можем использовать графики плотности, которые похожи на гистограммы, за исключением того, что они имеют плавную кривую вместо бинов.
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('sample.csv')
data.hist()
plt.show()
  • Диаграммы Box-Whisker: распределение каждого признака также можно определить с помощью коробчатых диаграмм. Эти графики обобщают разброс данных. В то время как прямоугольник представляет данные между 25-м и 75-м процентилями, выбросы также отмечены за пределами диаграмм либо звездочкой, либо точкой.
  • Матрица корреляции. Этот график помогает нам понять корреляцию между различными атрибутами, которые мы изучали в предыдущем разделе об описательной статистике. Матрица корреляции похожа на тепловую карту, где интенсивные цвета показывают сильную корреляцию между соответствующими функциями. Как и корреляционная матрица, график также симметричен.

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

До следующей статьи!