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

Как читать файлы .mat в Python?

Большое количество наборов данных для науки и исследований данных, используйте файлы .mat. В этой статье мы научимся работать с файлами .mat в Python и исследуйте их

Автор оригинала: 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 с его содержанием.

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

использованная литература