Руководство по ML.NET — начало работы через 10 минут
Введение
Цель
Используйте построитель моделей ML.NET в Visual Studio, чтобы обучить и использовать свою первую модель машинного обучения с ML.NET.
Установите ML.NET CLI, затем обучите и используйте свою первую модель машинного обучения с ML.NET.
Обязательные требования
Никто.
macOS 12.0 или более поздних версий.
Время завершения
10 минут + время загрузки/установки
Сценарий
Приложение, способное прогнозировать положительную или отрицательную тональность текста в отзывах клиентов.
Загрузить и установить
Загрузите и установите Visual Studio 2022.
При установке выберите рабочую нагрузку Разработка пользовательского интерфейса многоплатформенного приложения .NET, а также необязательный компонент ML.NET Model Builder. Если вы воспользуетесь приведенной выше ссылкой, необходимые предварительные условия будут выбраны автоматически, как показано на следующем изображении:
У вас уже есть Visual Studio 2022?
Если у вас уже есть решение Visual Studio 2022, обновите его и установите требуемую рабочую нагрузку:
- Нажмите клавишу Windows, введите Установщик Visual Studio и нажмите клавишу Enter.
- При появлении запроса разрешите программе установки обновить себя.
- Если доступно обновление для Visual Studio 2022, будет показана кнопка Обновить. Нажмите ее для обновления перед изменением установки. Рекомендуется использовать последнюю версию Visual Studio 2022 для этого руководства.
- Найдите свою установку Visual Studio 2022 и выберите Изменить.
- Выберите Разработка классических приложений .NET и убедитесь, что на панели справа выбран ML.NET Model Builder. Нажмите кнопку Изменить.
Перейдите на новейшую версию Model Builder
После включения ML.NET Model Builder в Visual Studio скачайте и установите последнюю версию.
Скачайте последнюю версию Model Builder
После скачивания установите расширение, дважды щелкнув файл VSIX.
Проверить наличие обновлений Visual Studio
Это руководство оптимизировано для последней версии Visual Studio. Если у вас уже есть Visual Studio 2022, вы можете проверить наличие обновлений:
- Нажмите клавишу Windows, введите Установщик Visual Studio и нажмите клавишу Enter.
- При появлении запроса разрешите программе установки обновить себя.
- Если доступно обновление, в установке Visual Studio 2022 появится кнопка Обновить. Выберите ее для обновления.
Установите пакет SDK для .NET
Для создания приложений .NET необходимо скачать и установить SDK .NET 8 (пакет средств разработки).
Скачать пакет SDK x64 для .NET 8 (Intel)
Скачать пакет SDK Arm64 для .NET 8 (Apple Silicon)
Если вы работаете на Mac с чипом Apple M1 или M2, вам необходимо установить версию Arm64 для SDK.
Установить CLI ML.NET
Интерфейс командной строки ML.NET (CLI) предоставляет инструменты для создания моделей машинного обучения с помощью ML.NET.
Примечание. В настоящее время ML.NET CLI находится в предварительной версии и поддерживает только последнюю LTS-версию .NET SDK (.NET 8).
Для действий по установке рекомендуется использовать консоль Bash. Так как по умолчанию для macOS используется консоль zsh, вы можете создать единственный экземпляр, открыв новый терминал и выполнив указанную ниже команду.
bash
ДЛЯ КОМПЬЮТЕРОВ x64 — выполните следующую команду:
dotnet tool install -g mlnet-linux-x64
ДЛЯ АРХИТЕКТУР ЧИПОВ ARM64 — вместо этого выполните следующую команду:
dotnet tool install -g mlnet-linux-arm64
Если инструмент успешно установлен, вы должны увидеть следующее выходное сообщение, где [arch]
— это архитектура чипа:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version 'X.X.X') was successfully installed.
dotnet tool install -g mlnet-osx-x64
ДЛЯ АРХИТЕКТУР ЧИПОВ ARM64 — вместо этого выполните следующую команду:
dotnet tool install -g mlnet-osx-arm64
Если инструмент успешно установлен, вы должны увидеть выходное сообщение, где [arch]
— это архитектура чипа, аналогичная следующей:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version 'X.X.X') was successfully installed.
Примечание. Если вы используете консоль, отличную от Bash (например, zsh, которая является новой консолью по умолчанию для macOS), нужно предоставить для mlnet
исполняемые разрешения и включить mlnet
в системный путь. Инструкции о том, как это сделать, должны появиться в терминале при установке mlnet (или любого другого глобального инструмента). Как правило, для большинства систем должна работать следующая команда: chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Если вы видите инструкции, аналогичные приведенным ниже, выполните их в своем терминале.
cat << \EOF >> ~/.zprofile
#Add .NET Core SDK tools
export PATH="$PATH:~/.dotnet/tools"
EOF
В качестве альтернативы вы можете попробовать использовать следующую команду для запуска инструмента mlnet:
~/.dotnet/tools/mlnet
Если команда по-прежнему выдает ошибку, нажмите кнопку Я столкнулся с проблемой ниже, чтобы сообщить о проблеме и получить помощь в ее устранении.
Создайте свое приложение
Откройте Visual Studio и создайте новое консольное приложение .NET:
- Выберите Создать новый проект в начальном окне Visual Studio 2022.
- Выберите шаблон проекта Консольное приложение C#.
- Измените имя проекта на
myMLApp
(Мое приложение машинного обучения). - Убедитесь, что флажок Поместить решение и проект в один каталог не установлен.
- Нажмите кнопку Далее.
- Выберите в качестве платформы .NET 8.0 (долгосрочная поддержка).
- Нажмите кнопку Создать. Visual Studio создаст проект и загрузит файл
Program.cs
.
Добавьте машинное обучение
Щелкните правой кнопкой мыши проект
myMLApp
в Обозревателе решений и выберите Добавить > Модель машинного обучения.- В диалоговом окне Добавить новый элемент убедитесь, что выбран параметр Модель машинного обучения (ML.NET).
Измените поле Name на
SentimentModel.mbconfig
и нажмите кнопку Add.
В решение добавляется новый файл с именем SentimentModel.mbconfig
, а пользовательский интерфейс построителя моделей открывается в новом закрепленном окне инструмента в Visual Studio. Файл mbconfig — это просто файл JSON, который отслеживает состояние пользовательского интерфейса.
Построитель моделей проведет вас через процесс создания модели машинного обучения, выполнив следующие шаги.
В терминале выполните следующие команды:
mkdir myMLApp
cd myMLApp
Команда mkdir
создает новый каталог с именем myMLApp
, а команда cd myMLApp
помещает вас во вновь созданный каталог приложения.
Код обучения вашей модели будет сгенерирован на следующих шагах.
Выберите сценарий
Чтобы создать модель, сначала необходимо выбрать сценарий машинного обучения. Model Builder поддерживает несколько сценариев:
Примечание. Если снимки экрана в руководстве отличаются от того, что вы видите на экране, возможно, следует обновить версию Model Builder. Перейдите в раздел Расширения > Управление расширениями и проверьте, нет ли доступных обновлений для Model Builder. В этом руководстве используется версия 17.18.2.
В этом случае вы будете прогнозировать настроение на основе содержания (текста) отзывов клиентов.
-
На экране «Сценарий построителя моделей» выберите сценарий Классификация данных, поскольку вы прогнозируете, к какой категории относится комментарий (положительный или отрицательный).
-
После выбора сценария Классификация данных необходимо выбрать среду обучения. Хотя некоторые сценарии поддерживают обучение в Azure, классификация в настоящее время поддерживает только локальное обучение, поэтому оставьте выбранной среду Локальная и перейдите к шагу Данные.
Чтобы сгенерировать модель, вам нужно выбрать сценарий машинного обучения.
Интерфейс командной строки ML.NET поддерживает несколько сценариев ML:
- Классификация. Используйте это, если хотите предсказать, к какой категории относятся данные (например, анализируя настроение отзывов клиентов как положительное или отрицательное).
- Классификация изображений. Используйте это, если хотите предсказать, к какой категории относится изображение (например, предсказать, является ли изображение кошкой или собакой).
- Регрессия (например, прогноз стоимости). Используйте это, если вы хотите прогнозировать числовое значение (например, прогнозировать цену дома).
- Прогнозирование. Используйте это, если хотите прогнозировать будущие значения во временном ряду (например, прогнозировать квартальные продажи).
- Рекомендация. Используйте это, если хотите рекомендовать товары пользователям на основе исторических рейтингов (например, рекомендацию продукта).
В этом случае вы будете прогнозировать тональность на основе содержания (текста) отзывов клиентов, поэтому будете использовать классификацию.
Скачать и добавить данные
Загрузите наборы данных Sentiment Labeled Sentences из репозитория машинного обучения UCI. Разархивируйте sentiment labelled sentences.zip
и сохраните файл yelp_labelled.txt
в каталоге myMLApp
.
Ваш Обозреватель решений должен выглядеть примерно так:
Каждая строка в yelp_labelled.txt
представляет собой отдельный отзыв о ресторане, оставленный пользователем Yelp. В первом столбце приведен комментарий пользователя, а втором столбце указана тональность текста (0 — отрицательная, 1 — положительная). Столбцы разделены знаками табуляции, а набор данных не имеет заголовка. Данные выглядят следующим образом:
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
Добавить данные
В конструкторе моделей вы можете добавлять данные из локального файла или подключаться к базе данных SQL Server. В этом случае вы добавите yelp_labelled.txt
из файла.
Выберите Файл как тип источника входных данных.
Найдите
yelp_labelled.txt
. После выбора набора данных в разделе Предварительный просмотр данных появится предварительный просмотр ваших данных. Поскольку в вашем наборе данных нет заголовка, заголовки генерируются автоматически ("col0" и "col1").В разделе Столбец для прогнозирования (метка) выберите "col1". Ярлык — это то, что вы прогнозируете. В данном случае это тональность во втором столбце ("col1") набора данных.
Столбцы, которые помогают прогнозировать метку, называются Функции. Все столбцы в наборе данных, кроме метки, автоматически выбираются как объекты. В этом случае столбец комментариев обзора ("col0") является столбцом Feature. Вы можете обновить столбцы объектов и изменить другие параметры загрузки данных в разделе Дополнительные параметры данных, но в этом примере это не обязательно.
После добавления данных перейдите к шагу Обучение.
Обучите свою модель
Теперь вы обучите свою модель набору данных yelp_labelled.txt
.
Model Builder оценивает многие модели с различными алгоритмами и параметрами на основе количества времени обучения, отведенного для построения наиболее эффективной модели.
Измените время обучения, которое представляет собой время, в течение которого построитель моделей должен исследовать различные модели, на 60 секунд (вы можете попробовать увеличить это число, если после обучения модели не будут найдены). Обратите внимание, что для больших наборов данных время обучения будет больше. Построитель моделей автоматически регулирует время обучения в зависимости от размера набора данных.
Вы можете обновить метрику оптимизации и алгоритмы, используемые в дополнительных параметрах обучения, но это не обязательно для этого примера.
Выберите Начать обучение, чтобы запустить процесс обучения. После запуска вы сможете увидеть оставшееся время.
Результаты обучения
После завершения обучения вы можете просмотреть сводку результатов обучения.
- Наилучшая точность макроса. Это показывает точность лучшей модели, найденной Model Builder. Более высокая точность означает, что модель более правильно предсказала тестовые данные.
- Лучшая модель. Здесь показано, какой алгоритм продемонстрировал наилучшие результаты во время исследования построителя моделей.
- Время обучения. Здесь показано общее время, затраченное на обучение/исследование моделей.
- Изучено моделей (всего). Здесь показано общее количество моделей, исследованных конструктором моделей за указанный период времени.
- Созданный код программной части. Здесь отображаются имена файлов, созданных для использования модели или обучения новой модели.
При желании вы можете просмотреть дополнительные сведения о сеансе обучения в окне «Вывод машинного обучения».
После завершения обучения модели перейдите к шагу Оценка.
В терминале выполните следующую команду (в папке myMLApp
):
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
Что означают эти команды?
Команда mlnet classification
запускает ML.NET с AutoML для изучения множества итераций моделей классификации за заданное время обучения с различными комбинациями преобразований данных, алгоритмов и параметров алгоритмов, а затем выбирает наиболее производительную модель.
- --dataset: Вы выбрали
yelp_labelled.txt
в качестве набора данных (внутренне интерфейс командной строки разделит один набор данных на наборы данных для обучения и тестирования). - --label-col: Вы должны указать целевой столбец, который вы хотите предсказать (или метку). В этом случае вы хотите предсказать тональность во втором столбце (столбцы с нулевым индексом означают, что это столбец "1").
- --has-header: Используйте этот параметр, чтобы указать, есть ли у набора данных заголовок. В этом случае у набора данных нет заголовка, так что это false.
- --name: Используйте этот параметр, чтобы указать имя для модели машинного обучения и связанных ресурсов. В этом случае все ресурсы, связанные с этой моделью машинного обучения, будут иметь в названии SentimentModel.
- --train-time: Вы также должны указать количество времени, в течение которого интерфейс командной строки ML.NET должен исследовать различные модели. В данном случае 60 секунд (можно попробовать увеличить это число, если после обучения не будет найдено ни одной модели). Обратите внимание, что для больших наборов данных вы должны установить более длительное время обучения.
Ход выполнения
Пока интерфейс командной строки ML.NET изучает различные модели, он отображает следующие данные:
- Начать обучение. В этом разделе показана каждая итерация модели, включая используемый обучающий модуль (алгоритм) и показатели оценки для этой итерации.
- Осталось времени. Это, а также индикатор выполнения показывают, сколько времени осталось в процессе обучения в секундах.
- Лучший алгоритм — показывает, какой алгоритм до сих пор давал наилучшие результаты.
- Лучший результат – показывает эффективность лучшей модели на данный момент. Более высокая точность означает, что модель более правильно предсказала тестовые данные.
При желании вы можете просмотреть дополнительную информацию о сеансе обучения в файле журнала, созданном интерфейсом командной строки.
Оцените свою модель
Шаг Оценка показывает наиболее эффективный алгоритм и максимальную точность, а также позволяет опробовать модель в пользовательском интерфейсе.
Попробуйте свою модель
Вы можете делать прогнозы на основе входных данных в разделе Попробуйте свою модель. Текстовое поле предварительно заполнено первой строкой данных из вашего набора данных, но вы можете изменить ввод и нажать кнопку Прогнозировать, чтобы попробовать различные прогнозы настроений.
В этом случае 0 означает отрицательное настроение, а 1 — положительное настроение.
Примечание. Если ваша модель не работает должным образом (например, если точность низкая или если модель предсказывает только значения «1»), вы можете попробовать добавить больше времени и повторить обучение. Это образец с использованием очень небольшого набора данных; для моделей производственного уровня вы хотели бы добавить гораздо больше данных и времени обучения.
После оценки и опробования модели перейдите к шагу "Использование".
После того, как интерфейс командной строки ML.NET выберет лучшую модель, он отобразит сводку обучения, в которой будет показана сводка процесса исследования, включая количество моделей, изученных за заданное время обучения.
Лучшие модели
Хотя интерфейс командной строки ML.NET генерирует код для наиболее производительной модели, он также отображает лучшие модели (до 5) с наивысшей точностью, обнаруженной за заданное время исследования. Он отображает несколько показателей оценки для этих лучших моделей, включая AUC, AUPRC и F1-оценку. Дополнительные сведения см. в разделе метрики ML.NET.
Сгенерировать код
После завершения обучения четыре файла автоматически добавляются в качестве кода программной части в SentimentModel.mbconfig
:
SentimentModel.consumption.cs
: этот файл содержит входные и выходные классы модели, а также методPredict
, который можно использовать для потребления модели.SentimentModel.evaluate.cs
: этот файл содержит методCalculatePFI
, использующий метод важности признака перестановки (PFI) для вычисления того, какие признаки оказывают наибольшее влияние на прогнозы модели.SentimentModel.mlnet
. Этот файл представляет собой обученную модель ML.NET, которая является сериализованным ZIP-файлом.SentimentModel.training.cs
. Этот файл содержит код для понимания важности входных столбцов для прогнозов вашей модели.
В шаге Использование в Model Builder предоставляется фрагмент кода, который создает выборку входных данных для модели и использует модель для прогнозирования этих входных данных.
Построитель моделей также предлагает шаблоны проектов, которые вы можете дополнительно добавить в свое решение. Существует два шаблона проекта (консольное приложение и веб-API), оба используют обученную модель.
Интерфейс командной строки ML.NET добавляет как модель машинного обучения, так и код для обучения и использования модели, который включает следующее:
-
Создан новый каталог SentimentModel с консольным приложением .NET, содержащим следующие файлы:
Program.cs
: этот файл содержит код для запуска модели.SentimentModel.consumption.cs
: этот файл содержит входные и выходные классы модели, а также методPredict
, который можно использовать для потребления модели.SentimentModel.mbconfig
: этот файл представляет собой файл JSON, в котором отслеживаются конфигурации и результаты вашего обучения.SentimentModel.training.cs
: этот файл содержит конвейер обучения (преобразование данных, алгоритм и параметры алгоритма), используемый для обучения окончательной модели.SentimentModel.zip
: этот файл представляет собой обученную модель ML.NET, которая является сериализованным ZIP-файлом.
Попробуйте модель в действии. Для этого запустите консольное приложение, чтобы с помощью модели спрогнозировать тональность одного предложения.
Потребляйте свою модель
Последним шагом является использование обученной модели в приложении конечного пользователя.
-
Замените код
Program.cs
в проектеmyMLApp
следующим кодом:Program.csusing MyMLApp; // Add input data var sampleData = new SentimentModel.ModelInput() { Col0 = "This restaurant was wonderful." }; // Load model and predict output of sample data var result = SentimentModel.Predict(sampleData); // If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative" var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative"; Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
-
Запустите
myMLApp
(нажмите CTRL+F5 или выберите Отладка > Начать без отладки). Вы должны увидеть следующие выходные данные, прогнозирующие, является ли входной оператор положительным или отрицательным.
Интерфейс командной строки ML.NET сгенерировал для вас обученную модель и код, поэтому теперь вы можете использовать модель в приложениях .NET (например, в консольном приложении SentimentModel
), выполнив следующие действия:
- В командной строке перейдите в каталог
consumeModelApp
.Terminalcd SentimentModel
-
Откройте
Program.cs
в любом редакторе кода и проверьте код. Код должен выглядеть примерно так:Program.csusing System; namespace SentimentModel.ConsoleApp { class Program { static void Main(string[] args) { // Add input data SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput() { Col0 = @"Wow... Loved this place." }; // Make a single prediction on the sample data and print results var predictionResult = SentimentModel.Predict(sampleData); Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n"); Console.WriteLine($"Col0: @{"Wow... Loved this place."}"); Console.WriteLine($"Col1: {1F}"); Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n"); Console.WriteLine("=============== End of process, hit any key to finish ==============="); Console.ReadKey(); } } }
-
Запустите приложение
SentimentModel.ConsoleApp
. Вы можете сделать это, выполнив следующую команду в терминале (убедитесь, что вы находитесь в каталогеSentimentModel
):Terminaldotnet run
Вывод должен выглядеть примерно так:
TerminalUsing model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data... Col0: Wow... Loved this place. Col1: 1 Class Score ----- ----- 1 0.9651076 0 0.034892436 =============== End of process, hit any key to finish ===============
Следующие шаги
Поздравляем, вы создали свою первую модель машинного обучения с помощью ML.NET Model Builder!
Теперь, когда у вас есть основы, продолжайте с модулем самостоятельного обучения в Microsoft Learn, где вы будете использовать данные датчика, чтобы определить, сломано ли производственное устройство.
Microsoft Learn: обучение модели профилактического обслуживания
ML.NET для начинающих
Луис познакомит вас с концепциями машинного обучения и ИИ, объяснит возможности этих технологий и поможет вам приступить к работе с OpenAI, Сервисами ИИ Azure и ML.NET:
Вас также может заинтересовать...
Поздравляем, вы создали свою первую модель машинного обучения с помощью ML.NET CLI!
Теперь, когда вы использовали интерфейс командной строки ML.NET для классификации (в частности, для анализа тональности), вы можете попробовать другие сценарии. Попробуйте сценарий регрессии (в частности, прогнозирование цен) с использованием набора данных о тарифах на такси, чтобы продолжить создание моделей ML.NET с помощью интерфейса командной строки ML.NET.
Загрузите набор данных о тарифах на такси
ML.NET для начинающих
Луис познакомит вас с концепцией машинного обучения и ИИ, объяснит возможности этих технологий и поможет вам приступить к работе с OpenAI, Сервисами ИИ Azure и ML.NET:
Вас также может заинтересовать...