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

*Это руководство на английском.
**Ниже туториал для Windows. Но ровно то же самое можно сделать и на MacOS/Linux.
Чтобы начать создавать приложения .NET, вам просто нужно скачать и установить .NET SDK (Software Development Kit).

Откройте командную строку и выполните следующие команды:
Команда
Чтобы использовать ML.NET, вам необходимо установить пакет Microsoft.ML. В командной строке выполните следующую команду:
Наше показательное приложение машинного обучения будет предсказывать тип цветка ириса (setosa, versicolor или virginica) на основе четырех характеристик: длина лепестка, ширина лепестка, длина чашелистика и ширина чашелистика.
Откройте репозиторий машинного обучения UCI: набор данных Iris, скопируйте и вставьте данные в текстовый редактор (например, «Блокнот») и сохраните их как
Когда вы добавите данные, это будет выглядеть следующим образом: каждый ряд представляет различный образец цветка ириса. Слева направо столбцы представляют: длину чашелистика, ширину чашелистика, длину лепестка, ширину лепестка и тип цветка ириса.
Если вы используете Visual Studio, вам необходимо настроить

Откройте
В командной строке выполните следующую команду:
Последняя строка вывода — это предсказанный тип цветка ириса. Вы можете изменить значения, передаваемые в функцию
Поздравляем, вы создали свою первую модель машинного обучения с ML.NET!
Теперь, когда вы получили основы, вы можете продолжить обучение с нашими учебниками по ML.NET.


*Это руководство на английском.
**Ниже туториал для 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.

