[Python, Xcode, Swift, Машинное обучение] Запускаем модель машинного обучения на iPhone (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Чего уж только на Хабре не было, и DOOM на осциллографе, тесте на беременности и калькуляторе запускали, даже сервер Minecraft на зеркалке Canon 200D поднимали. Сегодня же, специально к старту нового потока курса по Machine Learning и углубленного Machine Learning и Deep Learning, попробуем описать кратчайший путь от обучения модели машинного обучения на Python до доказательства концепции iOS-приложения, которое можно развернуть на iPhone. Цель статьи — дать базовый скаффолдинг, оставляя место для дальнейшей настройки, подходящей для конкретного случая использования.Для простоты мы пропустим некоторые задачи, такие как проверка модели и создание полностью отшлифованного пользовательского интерфейса (UI). К концу этого туториала у вас будет обученная модель, работающая на iOS, которую вы сможете продемонстрировать как прототип и загрузить на своё устройство.Шаг 1. Настройка среды Во-первых, давайте создадим виртуальную среду Python под названием .core_ml_demo, а затем установим необходимые библиотеки: pandas, scikit-learn и coremltools. Чтобы создать виртуальную среду, выполните в терминале эти команды:
python3 -m venv ~/.core_ml_demo
source ~/.core_ml_demo/bin/activate
python3 -m pip install \
pandas==1.1.1 \
scikit-learn==0.19.2 \
coremltools==4.0
Далее установим Xcode. XCode — это инструментарий разработки для продуктов Apple. Обратите внимание, что Xcode довольно большой (больше 10 ГБ). Я бы порекомендовал выпить чашку кофе или запустить установку на ночь.
Примечание: в этом туториале используется Xcode 12.3 (12C33) на MacOS Catalina 10.15.5.
Шаг 2. Обучение моделиМы будем использовать набор данных Boston Housing Price от scikit-learn для обучения модели линейной регрессии и прогнозирования цен на жильё на основе свойств и социально-экономических атрибутов. Поскольку мы стремимся к простоте, ограничим пространство признаков тремя предикторами и как целевую переменную будем использовать цену дома.
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
# Load data
boston = load_boston()
boston_df = pd.DataFrame(boston["data"])
boston_df.columns = boston["feature_names"]
boston_df["PRICE"]= boston["target"]
y = boston_df["PRICE"]
X = boston_df.loc[:,["RM", "AGE", "PTRATIO"]]
# Train a model
lm = LinearRegression()
lm.fit(X, y)
Шаг 3. Преобразование модели в Core MLApple предоставляет два способа разработки моделей для iOS. Первый, Create ML, позволяет создавать модели полностью в рамках экосистемы Apple. Второй, Core ML, позволяет интегрировать модели от третьих лиц в платформу Apple, преобразовав их в формат Core ML. Поскольку мы заинтересованы в запуске обученной модели на iOS, воспользуемся вторым способом.Перед импортом в Xcode мы преобразуем нашу модель sklearn в формат Core ML (.mlmodel) с помощью пакета python coremltool; coremltools позволяет назначать метаданные объекту модели, такие как информация об авторстве, описание функций модели и результатов.
# Convert sklearn model to CoreML
import coremltools as cml
model = cml.converters.sklearn. \
convert(lm,
["RM", "AGE", "PTRATIO"],
"PRICE")
# Assign model metadata
model.author = "Medium Author"
model.license = "MIT"
model.short_description = \
"Predicts house price in Boston"
# Assign feature descriptions
model.input_description["RM"] = \
"Number of bedrooms"
model.input_description["AGE"] = \
"Proportion of units built pre 1940"
model.input_description["PTRATIO"] = \
"Pupil-teacher ratio by town"
# Assign the output description
model.output_description["PRICE"] = \
"Median Value in 1k (USD)"
# Save model
model.save('bhousing.mlmodel')
Шаг 4. Создание нового проекта в XcodeС Python мы закончили. Теперь можно завершить прототип приложения при помощи только Xcode и Swift. Это можно сделать так:
- Откройте Xcode и создайте новый проект.
- Выберите «iOS» как тип мультиплатформы.
- Выберите тип приложения «App».
Создание нового проекта Xcode для iOS4. Дайте проекту название и выберите интерфейс «SwiftUI».
Конфигурация проектаТеперь просто перетащите созданный на третьем шаге файл модели .ml в каталог Xcode. Xcode автоматически сгенерирует класс Swift для вашей модели, как показано в редакторе ниже. Если вы посмотрите на класс, то заметите, что он содержит детали, которые мы ввели при сохранении нашей модели на Python с помощью coremltools, такие как описания объектов и целевых полей. Это удобно при управлении моделью.
Импорт файла .coreml в проект XcodeШаг 5. Создание UI модели Далее создадим базовый пользовательский интерфейс, изменив файл contentView.swift. Приведённый ниже код на Swift отображает пользовательский интерфейс, который позволяет пользователям настраивать атрибуты дома, а затем прогнозировать его цену. Есть несколько элементов, которые мы можем здесь рассмотреть.NavigationView содержит необходимый пользовательский интерфейс. Он включает:
- Степпер (строки 19–30) для каждой из наших трёх функций, который позволяет пользователям изменять значения функций. Степперы — это в основном виджеты, которые изменяют @State атрибутных переменных нашего дома (строки 6–8).
- Кнопку на панели навигации (строки 31–40) для вызова нашей модели из функции predictPrice (строка 46). На экране появится предупреждающее сообщение с прогнозируемой ценой.
За пределами NavigationView у нас есть функция predictPrice (строки 46–62). Она создаёт экземпляр класса Swift Core ML model и генерирует прогноз в соответствии с хранящимися в состояниях объектов значениями.
import SwiftUI
import CoreML
import Foundation
struct ContentView: View {
@State private var rm = 6.5
@State private var age = 84.0
@State private var ptratio = 16.5
@State private var alertTitle = ""
@State private var alertMessage = ""
@State private var showingAlert = false
var body: some View {
NavigationView {
VStack {
Text("House Attributes")
.font(.title)
Stepper(value: $rm, in: 1...10,
step: 0.5) {
Text("Rooms: \(rm)")
}
Stepper(value: $age, in: 1...100,
step: 0.5) {
Text("Age: \(age)")
}
Stepper(value: $ptratio, in: 12...22,
step: 0.5) {
Text("Pupil-teacher ratio: \(ptratio)")
}
.navigationBarTitle("Price Predictor")
.navigationBarItems(trailing:
Button(action: predictPrice) {
Text("Predict Price")
}
)
.alert(isPresented: $showingAlert) {
Alert(title: Text(alertTitle),
message: Text(alertMessage),
dismissButton: .default(Text("OK")))
}
}
}
}
func predictPrice() {
let model = bhousing()
do { let p = try
model.prediction(
RM: Double(rm),
AGE: Double(age),
PTRATIO: Double(ptratio))
alertMessage = "$\(String((p.PRICE * 1000)))"
alertTitle = "The predicted price is:"
} catch {
alertTitle = "Error"
alertMessage = "Please retry."
}
showingAlert = true
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
И, наконец, самое интересное: мы можем создать и запустить симуляцию приложения в Xcode, чтобы увидеть нашу модель в действии. В приведённом ниже примере я создал симуляцию с помощью iPhone 12.
Симуляция модели работает на iOS.ЗаключениеИ это всё. Первый прототип завершён. Здесь есть что добавить, например валидацию модели, тесты для подтверждения ожидаемой производительности после импорта в iOS и более гладкий/дружественный пользовательский интерфейс. Тем не менее я надеюсь, что статья послужит полезным справочником по развёртыванию машинного обучения на мобильном устройстве.Новые и усовершенствованные инструменты продолжают делать поиски в мобильной разработке более доступными для сообщества Data Science, и в мобильном мире есть большое пространство для творчества. Поскольку мобильная техника мультимедийная по своей сути, она даёт богатство типов данных (например, аудио, видео, движение и местоположение) наряду с уникальными вариантами применения приложений для расширения инструментария Data Science.Если вы кодите на Python и столкнулись в работе с задачами машинного обучения — обратите внимание на наш курс Machine Learning, на котором вы сможете систематизировать и углубить полученные самостоятельно знания, пообщаться с профессионалами и применить модели Machine Learning на практике. Даже можно будет ворваться на хакатоны Kaggle.
Если же есть намерение сменить сферу деятельности и погрузиться в ML более плотно — то можно посмотреть на продвинутый курс Machine Learning и Deep Learning, на котором вы освоите основные алгоритмы машинного обучения, обучите рекомендательную систему и создадите несколько нейронных сетей.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
- Профессия iOS-разработчик с нуля
- Профессия Fullstack-разработчик на Python
- Профессия Data Scientist
- Профессия Data Analyst
- Курс по Data Engineering
Другие профессии и курсыПРОФЕССИИ
- Профессия Fullstack-разработчик на Python
- Профессия Java-разработчик
- Профессия QA-инженер на JAVA
- Профессия Frontend-разработчик
- Профессия Этичный хакер
- Профессия C++ разработчик
- Профессия Разработчик игр на Unity
- Профессия Веб-разработчик
- Профессия iOS-разработчик с нуля
- Профессия Android-разработчик с нуля
КУРСЫ
- Курс по Machine Learning
- Курс "Machine Learning и Deep Learning"
- Курс "Математика для Data Science"
- Курс "Математика и Machine Learning для Data Science"
- Курс "Python для веб-разработки"
- Курс "Алгоритмы и структуры данных"
- Курс по аналитике данных
- Курс по DevOps
===========
Источник:
habr.com
===========
===========
Автор оригинала: Patrick Long
===========Похожие новости:
- [Ненормальное программирование, Python, Геоинформационные сервисы, Логические игры] Используем глубокое обучение, чтобы отгадывать страны по фотографиям в GeoGuessr (перевод)
- [Python, Программирование] Превращаем клавиатуру в пианино с помощью python
- [Big Data, Машинное обучение, Искусственный интеллект] «Хватит уже называть всё подряд искусственным интеллектом!»
- [Разработка под Arduino] Подключение светодиодной матрицы 8x8 к arduino
- Включение поддержки HTTP/3 в Firefox намечено на конец мая
- [Python, Математика, Машинное обучение, Физика] Применение машинного обучения к кинетике ядерных реакторов (перевод)
- [Алгоритмы, Математика, Машинное обучение, Читальный зал] Объясняем на пальцах принцип действия оптимизаторов для нейронных сетей: основные алгоритмы, и зачем они нужны (перевод)
- [Python, API, SQLite] Подключаем Sqlite3 к Telegram боту
- [Работа с 3D-графикой, Машинное обучение, Искусственный интеллект] NVIDIA представила технологию создания 3D-моделей на основе фотографий
- [Спортивное программирование, Разработка мобильных приложений, Машинное обучение, Дизайн] Открываем регистрацию на седьмой сезон VK Cup
Теги для поиска: #_python, #_xcode, #_swift, #_mashinnoe_obuchenie (Машинное обучение), #_skillfactory, #_mashinnoe+obuchenie (машинное+обучение), #_swift, #_python, #_xcode, #_coreml, #_pandas, #_coremltools, #_sklearn, #_ui, #_blog_kompanii_skillfactory (
Блог компании SkillFactory
), #_python, #_xcode, #_swift, #_mashinnoe_obuchenie (
Машинное обучение
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 23:18
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Чего уж только на Хабре не было, и DOOM на осциллографе, тесте на беременности и калькуляторе запускали, даже сервер Minecraft на зеркалке Canon 200D поднимали. Сегодня же, специально к старту нового потока курса по Machine Learning и углубленного Machine Learning и Deep Learning, попробуем описать кратчайший путь от обучения модели машинного обучения на Python до доказательства концепции iOS-приложения, которое можно развернуть на iPhone. Цель статьи — дать базовый скаффолдинг, оставляя место для дальнейшей настройки, подходящей для конкретного случая использования.Для простоты мы пропустим некоторые задачи, такие как проверка модели и создание полностью отшлифованного пользовательского интерфейса (UI). К концу этого туториала у вас будет обученная модель, работающая на iOS, которую вы сможете продемонстрировать как прототип и загрузить на своё устройство.Шаг 1. Настройка среды Во-первых, давайте создадим виртуальную среду Python под названием .core_ml_demo, а затем установим необходимые библиотеки: pandas, scikit-learn и coremltools. Чтобы создать виртуальную среду, выполните в терминале эти команды: python3 -m venv ~/.core_ml_demo
source ~/.core_ml_demo/bin/activate python3 -m pip install \ pandas==1.1.1 \ scikit-learn==0.19.2 \ coremltools==4.0 Примечание: в этом туториале используется Xcode 12.3 (12C33) на MacOS Catalina 10.15.5.
import pandas as pd
from sklearn.linear_model import LinearRegression from sklearn.datasets import load_boston # Load data boston = load_boston() boston_df = pd.DataFrame(boston["data"]) boston_df.columns = boston["feature_names"] boston_df["PRICE"]= boston["target"] y = boston_df["PRICE"] X = boston_df.loc[:,["RM", "AGE", "PTRATIO"]] # Train a model lm = LinearRegression() lm.fit(X, y) # Convert sklearn model to CoreML
import coremltools as cml model = cml.converters.sklearn. \ convert(lm, ["RM", "AGE", "PTRATIO"], "PRICE") # Assign model metadata model.author = "Medium Author" model.license = "MIT" model.short_description = \ "Predicts house price in Boston" # Assign feature descriptions model.input_description["RM"] = \ "Number of bedrooms" model.input_description["AGE"] = \ "Proportion of units built pre 1940" model.input_description["PTRATIO"] = \ "Pupil-teacher ratio by town" # Assign the output description model.output_description["PRICE"] = \ "Median Value in 1k (USD)" # Save model model.save('bhousing.mlmodel')
Создание нового проекта Xcode для iOS4. Дайте проекту название и выберите интерфейс «SwiftUI». Конфигурация проектаТеперь просто перетащите созданный на третьем шаге файл модели .ml в каталог Xcode. Xcode автоматически сгенерирует класс Swift для вашей модели, как показано в редакторе ниже. Если вы посмотрите на класс, то заметите, что он содержит детали, которые мы ввели при сохранении нашей модели на Python с помощью coremltools, такие как описания объектов и целевых полей. Это удобно при управлении моделью. Импорт файла .coreml в проект XcodeШаг 5. Создание UI модели Далее создадим базовый пользовательский интерфейс, изменив файл contentView.swift. Приведённый ниже код на Swift отображает пользовательский интерфейс, который позволяет пользователям настраивать атрибуты дома, а затем прогнозировать его цену. Есть несколько элементов, которые мы можем здесь рассмотреть.NavigationView содержит необходимый пользовательский интерфейс. Он включает:
import SwiftUI
import CoreML import Foundation struct ContentView: View { @State private var rm = 6.5 @State private var age = 84.0 @State private var ptratio = 16.5 @State private var alertTitle = "" @State private var alertMessage = "" @State private var showingAlert = false var body: some View { NavigationView { VStack { Text("House Attributes") .font(.title) Stepper(value: $rm, in: 1...10, step: 0.5) { Text("Rooms: \(rm)") } Stepper(value: $age, in: 1...100, step: 0.5) { Text("Age: \(age)") } Stepper(value: $ptratio, in: 12...22, step: 0.5) { Text("Pupil-teacher ratio: \(ptratio)") } .navigationBarTitle("Price Predictor") .navigationBarItems(trailing: Button(action: predictPrice) { Text("Predict Price") } ) .alert(isPresented: $showingAlert) { Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("OK"))) } } } } func predictPrice() { let model = bhousing() do { let p = try model.prediction( RM: Double(rm), AGE: Double(age), PTRATIO: Double(ptratio)) alertMessage = "$\(String((p.PRICE * 1000)))" alertTitle = "The predicted price is:" } catch { alertTitle = "Error" alertMessage = "Please retry." } showingAlert = true } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } Симуляция модели работает на iOS.ЗаключениеИ это всё. Первый прототип завершён. Здесь есть что добавить, например валидацию модели, тесты для подтверждения ожидаемой производительности после импорта в iOS и более гладкий/дружественный пользовательский интерфейс. Тем не менее я надеюсь, что статья послужит полезным справочником по развёртыванию машинного обучения на мобильном устройстве.Новые и усовершенствованные инструменты продолжают делать поиски в мобильной разработке более доступными для сообщества Data Science, и в мобильном мире есть большое пространство для творчества. Поскольку мобильная техника мультимедийная по своей сути, она даёт богатство типов данных (например, аудио, видео, движение и местоположение) наряду с уникальными вариантами применения приложений для расширения инструментария Data Science.Если вы кодите на Python и столкнулись в работе с задачами машинного обучения — обратите внимание на наш курс Machine Learning, на котором вы сможете систематизировать и углубить полученные самостоятельно знания, пообщаться с профессионалами и применить модели Machine Learning на практике. Даже можно будет ворваться на хакатоны Kaggle. Если же есть намерение сменить сферу деятельности и погрузиться в ML более плотно — то можно посмотреть на продвинутый курс Machine Learning и Deep Learning, на котором вы освоите основные алгоритмы машинного обучения, обучите рекомендательную систему и создадите несколько нейронных сетей. Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
=========== Источник: habr.com =========== =========== Автор оригинала: Patrick Long ===========Похожие новости:
Блог компании SkillFactory ), #_python, #_xcode, #_swift, #_mashinnoe_obuchenie ( Машинное обучение ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 23:18
Часовой пояс: UTC + 5