Автор оригинала: Pankaj Kumar.
Как читать файлы .mat в Python?
Большое количество наборов данных для науки и исследований данных, используемых .mat файлы. В этой статье мы научимся работать с файлами .mat в Python и изучить их подробно.
Почему мы используем файлы .mat в Python?
Цель .mat Файл, возможно, не кажется очевидным сразу. Но при работе с большими наборами набора данных информация, содержащаяся в этих файлах, абсолютно имеет решающее значение для проектов науки о науке/машины!
Это потому, что .mat Файлы содержат метаданные каждого объекта/записи в набор данных.
Хотя файлы не совсем предназначены для единственной цели создания аннотаций, много исследователей используют Матлаб Для своих исследований и сбора данных, вызывая множество аннотаций, которые мы используем в машинном обучении, присутствующие в форме .mat файлы.
Итак, для ученого данных важно понять, как использовать файлы .mat для ваших проектов. Они также помогут вам лучше работать с наборами данных о тренировках и тестировании вместо того, чтобы работать с регулярными файлами CSV.
Давайте начнем!
Как читать файлы .mat в Python?
По умолчанию Python не способен читать файлы .mat. Нам нужно импортировать библиотеку, которая знает, как обрабатывать формат файла.
1. Установите Scipy
Подобно тому, как мы используем модуль CSV для работы с файлами .csv, мы импортируем Scipy Sibary для работы с файлами .mat в Python.
Если у вас еще нет Scipy, вы можете использовать команду PIP, чтобы установить одинаковую
pip install scipy
Теперь, когда у нас есть Scipy, настроенная и готовая к использованию, следующим шагом – открыть сценарий Python, чтобы наконец получить данные, необходимые из файла.
2. Импортируйте модуль scipy.io.io.oloadmat
В этом примере я буду использовать аннотации аккордеона, предоставленные Caltech, в 101 Категории объектов Отказ
from scipy.io import loadmat annots = loadmat('annotation_0001.mat') print(annots)
После выполнения, печать Аннонас предоставит нам это в качестве вывода.
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Tue Dec 14 15:57:03 2004', '__version__': '1.0', '__globals__': [], 'box_coord': array([[ 2, 300, 1, 260]], dtype=uint16), 'obj_contour': array([[ 37.16574586, 61.94475138, 89.47697974, 126.92081031, 169.32044199, 226.03683241, 259.07550645, 258.52486188, 203.46040516, 177.5801105 , 147.84530387, 117.0092081 , 1.37384899, 1.37384899, 7.98158379, 0.82320442, 16.2412523 , 31.65930018, 38.81767956, 38.81767956], [ 58.59300184, 44.27624309, 23.90239411, 0.77532228, 2.97790055, 61.34622468, 126.87292818, 214.97605893, 267.83793738, 270.59116022, 298.67403315, 298.67403315, 187.99447514, 94.93554328, 90.53038674, 77.31491713, 62.44751381, 62.99815838, 56.94106814, 56.94106814]])}
Начал, вы можете увидеть, что этот единственный .mat Файл предоставляет информацию относительно Версия MATLAB используется, платформа, дата его создания и намного больше Отказ
Часть, которую мы должны сосредоточиться на том, однако, Box_coord. и то obj_contour .
3. Разбираться в анализе структуры файлов .mat
Если вы проходили информацию о аннотациях, предоставленных Caltech, вы знаете, что эти цифры являются очертаниями соответствующего изображения в наборе данных.
Подробнее, это означает, что объект, присутствующий в изображении 0001, состоит из этих контуров. Немного дальше в статье мы будем сортировать по номерам, поэтому не беспокойтесь об этом сейчас.
Память через эту структуру файлов, мы могли бы назначить все значения контура в новый список Python.
con_list = [[element for element in upperElement] for upperElement in annots['obj_contour']]
Если мы напечатали con_list
Мы получим простую 2D массив.
[[37.16574585635357, 61.94475138121544, 89.47697974217309, 126.92081031307546, 169.32044198895025, 226.03683241252295, 259.0755064456721, 258.52486187845295, 203.4604051565377, 177.58011049723754, 147.84530386740326, 117.0092081031307, 1.3738489871086301, 1.3738489871086301, 7.98158379373848, 0.8232044198894926, 16.24125230202577, 31.65930018416205, 38.81767955801104, 38.81767955801104], [58.59300184162066, 44.27624309392269, 23.90239410681403, 0.7753222836096256, 2.9779005524862328, 61.34622467771641, 126.87292817679563, 214.97605893186008, 267.83793738489874, 270.59116022099454, 298.6740331491713, 298.6740331491713, 187.9944751381216, 94.93554327808477, 90.53038674033152, 77.31491712707185, 62.44751381215474, 62.998158379373876, 56.94106813996319, 56.94106813996319]]
4. Используйте Pandas DataFrames для работы с данными
Теперь, когда у вас есть информация, и данные извлечены, как бы вы работали с ним? Продолжайте использовать списки? Точно нет.
Мы используем Dataframes Как структура для работы, в том, что она функционирует так же, как таблица данных. Аккуратный, чтобы посмотреть, и чрезвычайно просто использовать.
Теперь, чтобы работать с DataFrames, нам нужно импортировать еще один модуль, Пандас Отказ
import pandas as pd
Pandas – это инструмент анализа данных с открытым исходным кодом, который используется энтузиастами машин и учеными на основе данных по всему миру. Операции, предоставленные ними, считаются жизненно важными и фундаментальными во многих приложениях науки.
Мы будем работать только с DataFrames в этой статье, но имейте в виду, что возможности, предоставляемые Пандами, являются огромными.
Работа с полученными вышеданными данные, могут быть упрощены с помощью Pands, чтобы построить рамку данных со строками и столбцами для данных.
# zip provides us with both the x and y in a tuple. newData = list(zip(con_list[0], con_list[1])) columns = ['obj_contour_x', 'obj_contour_y'] df = pd.DataFrame(newData, columns=columns)
Теперь у нас есть наши данные в аккуратном DataFrame!
obj_contour_x obj_contour_y 0 37.165746 58.593002 1 61.944751 44.276243 2 89.476980 23.902394 3 126.920810 0.775322 4 169.320442 2.977901 5 226.036832 61.346225 6 259.075506 126.872928 7 258.524862 214.976059 8 203.460405 267.837937 9 177.580110 270.591160 10 147.845304 298.674033 11 117.009208 298.674033 12 1.373849 187.994475 13 1.373849 94.935543 14 7.981584 90.530387 15 0.823204 77.314917 16 16.241252 62.447514 17 31.659300 62.998158 18 38.817680 56.941068 19 38.817680 56.941068
Как видите, у нас есть координаты X и Y для наброски изображения в простом Dataframe двух столбцов.
Это должно обеспечить вам некоторую ясность о природе данных в файле.
Процесс создания данных DataFrames для каждого .mat Файл отличается, но, с опытом и практикой, создавая их из .mat Файлы должны прийти к вам естественным путем.
Это все для этой статьи!
Заключение
Теперь вы знаете, как работать с .mat Файлы в Python и как создавать файлы данных в Pands с его содержанием.
Следующие шаги для работы с этими данными будут и создавать свои собственные модели или использовать существующие для обучения или тестирования вашей копии набора данных.