Руководство по ML.NET — первое приложение за 10 минут

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В прошлом году мы представили ML.NET, кросс-платформенную и открытую систему машинного обучения для разработчиков .NET. За это время она очень сильно развилась и прошла через множество версий. Сегодня делимся руководством по тому, как создать свое первое приложение на ml.net за 10 минут.

*Это руководство на английском. **Ниже туториал для Windows. Но ровно то же самое можно сделать и на MacOS/Linux.

Установите .NET SDK

Чтобы начать создавать приложения .NET, вам просто нужно скачать и установить .NET SDK (Software Development Kit).

Создайте свое приложение

Откройте командную строку и выполните следующие команды:

dotnet new console -o myApp cd myApp

Команда dotnet создаст для вас new приложение типа console. Параметр -o создает директорий с именем myApp, в котором хранится ваше приложение, и заполнит его необходимыми файлами. Команда cd myApp вернет вас в созданный директорий приложения.

Установите пакет ML.NET

Чтобы использовать ML.NET, вам необходимо установить пакет Microsoft.ML. В командной строке выполните следующую команду:

dotnet add package Microsoft.ML --version 0.9.0

Скачайте БД

Наше показательное приложение машинного обучения будет предсказывать тип цветка ириса (setosa, versicolor или virginica) на основе четырех характеристик: длина лепестка, ширина лепестка, длина чашелистика и ширина чашелистика.

Откройте репозиторий машинного обучения UCI: набор данных Iris, скопируйте и вставьте данные в текстовый редактор (например, «Блокнот») и сохраните их как iris-data.txt в каталоге myApp.

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

5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa ...

Используете Visual Studio?

Если вы используете Visual Studio, вам необходимо настроить iris-data.txt для копирования в output-директорий.

Немного покодим

Откройте Program.cs в любом текстовом редакторе и замените весь код следующим:

using Microsoft.ML; using Microsoft.ML.Data; using System;  namespace myApp {     class Program     {         // Шаг 1: Определите ваши структуры данных         // IrisData используется для предоставления обучающих данных, а также         // как введение для предиктивных операций         // - Первые 4 свойства -- это входные данные / функции, используемые для прогнозирования метки label         // - Label -- это то, что вы предсказываете, и устанавливается только при обучении         public class IrisData         {            [LoadColumn(0)]             public float SepalLength;              [LoadColumn(1)]             public float SepalWidth;              [LoadColumn(2)]             public float PetalLength;              [LoadColumn(3)]             public float PetalWidth;              [LoadColumn(4)]             public string Label;         }          // IrisPrediction является результатом, возвращенным из операций прогнозирования         public class IrisPrediction         {             [ColumnName("PredictedLabel")]             public string PredictedLabels;         }          static void Main(string[] args)         {             // Шаг 2: создание среды ML.NET              var mlContext = new MLContext();              // Если работаете в Visual Studio, убедитесь, что параметр 'Copy to Output Directory'             // iris-data.txt установлен как 'Copy always'             var reader = mlContext.Data.CreateTextReader<IrisData>(separatorChar: ',', hasHeader: true);             IDataView trainingDataView = reader.Read("iris-data.txt");              // Шаг 3: Преобразуйте свои данные и добавьте learner             // Присвойте числовые значения тексту в столбце «label», потому что только             // числа могут быть обработаны во время обучения модели.             // Добавьте обучающий алгоритм в pipeline. Например (What type of iris is this?)             // Преобразовать label обратно в исходный текст (после преобразования в число на шаге 3)             var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")                 .Append(mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))                 .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumn: "Label", featureColumn: "Features"))                 .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));              // Шаг 4: обучите модель на этом дата-сете             var model = pipeline.Fit(trainingDataView);              // Шаг 5: используйте модель для предсказания             // Вы можете изменить эти цифры, чтобы проверить разные прогнозы             var prediction = model.CreatePredictionEngine<IrisData, IrisPrediction>(mlContext).Predict(                 new IrisData()                 {                     SepalLength = 3.3f,                     SepalWidth = 1.6f,                     PetalLength = 0.2f,                     PetalWidth = 5.1f,                 });              Console.WriteLine($"Predicted flower type is: {prediction.PredictedLabels}");         }     } }

Запустите ваше приложение

В командной строке выполните следующую команду:

dotnet run

Последняя строка вывода — это предсказанный тип цветка ириса. Вы можете изменить значения, передаваемые в функцию Predict, чтобы увидеть прогнозы, основанные на различных измерениях.

Поздравляем, вы создали свою первую модель машинного обучения с ML.NET!

Не останавливайтесь на достигнутом

Теперь, когда вы получили основы, вы можете продолжить обучение с нашими учебниками по ML.NET.


Источник: habr.com

Комментарии: