Apple недавно открыла исходный код своего API машинного обучения под названием Turi Create, который представляет собой API высокого уровня для машинного обучения и глубокого обучения. Turi Create - это самый простой ресурс, позволяющий быстро настроить и запустить ваши модели. Я экспериментировал с этой библиотекой, и она дает вам то, что обещает. Turi Create ориентирован на разработчиков, которые не обязательно имеют опыт работы в области науки о данных. Следует отметить, что Turi дает вам очень ограниченный контроль над точной настройкой вашей модели. Учитывая опыт Apple в разработке инструмента (первоначально приобретенный у GraphLab Create), модель отлично справляется с определением ваших требований и дает вам отличный результат, готовый к производству. На гитхабе проекта вы можете найти примеры запуска моделей глубокого обучения с помощью менее 5 строк кода.

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

Данные

Для этого упражнения мы будем использовать набор данных Распознавание действий человека и постуральных переходов с помощью смартфона из репозитория машинного обучения UCI. Просто загрузите zip-папку HAPT Data Set.zip и распакуйте ее на свой компьютер. Если вы делаете это в Google Colaboratory (который я недавно полюбил), вы можете следовать следующему коду. Если вы делаете это в классическом Jupyter Notebook, Spyder или других, пропустите этот шаг и перейдите к следующему разделу кода sFrame.

Для совместной работы вам необходимо загрузить и разархивировать свои данные. Если вы читали мои предыдущие статьи, это довольно просто: загрузите файл в виртуальную машину Colaboratory. Поскольку он загружен в ОЗУ, запишите его на диск. Разархивируйте его.

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

Прежде чем продолжить, я рекомендую вам прочитать файл Readme.txt в папке набора данных, чтобы получить подробное представление о данных (когда вы сами кодируете его). Этот шаг является наиболее важным в вашем проекте по науке о данных.

Двигаемся дальше…

Теперь мы установили Turi Create и готовы к работе. ! pip install -U turicreate (без символа "!" в локальном машинном терминале)

sFrame

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

Что упрощают sFrames? sFrames не нужно загружать в ОЗУ целиком, когда алгоритмы работают с набором данных. Это минимизирует ресурсы, необходимые для памяти. SFrame (как вы увидите) хранится на вашем диске и выбирается для обработки, когда должны выполняться операции.

Этот набор данных содержит текстовые файлы данных с акселерометра и гироскопа со смартфона / умных часов в папке Raw Data. Также в этой папке находится файл labels.txt, который включает метки. Обратите внимание, что описание меток присутствует в файле README.txt, на который мы будем ссылаться при настройке sframe меток.

После импорта библиотеки turicreate мы извлекаем метки из файла labels.txt (которому предшествует путь data_dir), в качестве пробела выбирается разделитель. Поскольку метки не имеют заголовков, нам нужно определить их со ссылкой на README.txt. Показаны ярлыки для проверки.

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

Получите мысленный образ вашего набора данных, прежде чем мы начнем его создавать. В нашем sFrame нам нужны 3 значения осей акселерометра, 3 значения осей гироскопа, exp_id, user_id и, наконец, метки. Имена столбцов: exp_id - идентификатор пользователя - acc_x - acc_y - acc_z - gyro_x - gyro_y - gyro_z - activity (метки)

Теперь мы переходим к округлению наших данных из различных файлов и помещению их в один sFrame. Обратите внимание, как у нас есть данные в нескольких текстовых файлах. Чтобы получить из них данные, нам понадобится библиотека glob. Glob делает очень удобным получение данных из файлов, которые следуют фиксированному соглашению об именах. Здесь наш каталог Raw Data состоит из данных 3-осевого акселерометра в файлах acc _ *. Txt, а данные 3-осевого гироскопа находятся в файлах gyro _ *. Txt. Сначала мы инициализируем глобальный объект для обработки этих файлов. С помощью tc.sframe мы создаем sFrame для заполнения данных. За ним следует простой цикл for, который выбирает user_id и exp_id из имен файлов в каталоге Raw Data. В этом цикле мы заполняем столбцы наших данных ускорения и данных гироскопа в соответствующих местах правильными именами столбцов.

Здесь уже готова большая часть наших данных. Нам нужно сделать метки для целей. Wq уже имеет столбец activity_id в нашем наборе данных, который мы заменим фактическими названиями действий, поскольку Turi самостоятельно обрабатывает все виды категориальных данных, и станет очень удобно получать прогнозы в известных форматах, когда они нам понадобятся.

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

Модель

Приступаем к интересной и заключительной части проекта. Сначала мы создаем тестовую и тренировочную наборы. Мы определяем набор данных параметров (данные), идентификатор сеанса, который является уникальным идентификатором для каждого наблюдения, и размер обучающего набора: 80%.

Turi имеет встроенный класс для работы с мониторингом активности, который называется activity_classifier. Для построения этого классификатора нам необходимо указать определенные параметры. Первый - поезд имени набора данных. Затем session_id, который является уникальным идентификатором для каждого образца в вашем наборе данных. Определенные значения тегов. И prediction_window, который установлен на 50, поскольку наши образцы были записаны с частотой 50 Гц (что доступно в файле README.txt). Есть и другие параметры, которые вам может потребоваться установить, для которых вам нужно проверить документацию.

Смотрите модель поезда.

Оценить модель довольно просто. Мы оцениваем модель на тестовых данных, которые оставили в стороне. Наша модель показывает точность 69,90%, что неплохо.

Сохранение модели. Для Turi мы сохраняем модель как файл .model. А для тех, кто занимается разработкой для iOS, вы можете экспортировать модель как Core ML в формате .mlmodel.

Делаем прогнозы.

Мы берем экземпляры walk из набора данных, чтобы создать walking_3_sec в диапазоне 1000: 1150. Мы передаем это как параметр методу model.predict, чтобы проверить, правильно ли их предсказывает наша модель.

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

Пожалуйста, проверьте документацию Turi Create на github, чтобы узнать, как настроить свои модели. Я буду публиковать больше руководств по этому API. Предложения и исправления приветствуются.

Найдите меня в Facebook, Twitter и LinkedIn. Я люблю разговаривать о машинном обучении.

(Изменить: эта статья все еще обновляется и пересматривается)