В прошлом году мы представили 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.
