Быстрый старт
Здесь начинается знакомство с машинным обучением — одной из самых важных областей современной информатики.
В обычной программе разработчик сам задаёт правила работы алгоритма. Например, можно написать условие if, которое проверяет значение переменной и принимает решение. Машинное обучение работает иначе: программе показывают множество примеров, а правило она строит самостоятельно на основе данных.
Иногда говорят, что компьютер «учится» или «думает». На самом деле модель машинного обучения не думает как человек. Она получает данные, подбирает внутренние параметры по определённым математическим алгоритмам и находит закономерности, которые помогают принимать решения для новых объектов.
Поэтому данные играют ключевую роль. Чем больше качественных примеров доступно модели, тем лучше она может выявить скрытые зависимости и тем точнее будут её прогнозы.
Результатом обучения становится модель — математическая конструкция, которая хранит найденную закономерность. После обучения модель можно применять к новым данным: распознавать объекты, предсказывать значения, находить группы похожих объектов и решать многие другие задачи.
В этом примере мы рассмотрим задачу классификации. По измерениям цветка нужно определить его вид. Программа загрузит встроенный датасет Iris, разделит данные на обучающую и тестовую выборки, обучит модель логистической регрессии и проверит, насколько часто модель отвечает правильно.
Полная программа
Заголовок раздела «Полная программа»uses MLABC;
begin var ds := Datasets.Iris; var df := ds.Data;
var X := df.ToMatrix(ds.Features); var y := df.EncodeLabels(ds.Target);
var (Xtrain, Xtest, ytrain, ytest) := Validation.TrainTestSplit(X, y, testRatio := 0.2, seed := 3);
var model := new LogisticRegression(0.001); model.Fit(Xtrain, ytrain);
var pred := model.Predict(Xtest); var acc := Metrics.Accuracy(ytest, pred);
Println('Точность:', acc:0:3);end.Что делает программа
Заголовок раздела «Что делает программа»Datasets.Irisзагружает небольшой встроенный датасет с измерениями цветков ириса.ToMatrixпревращает выбранные признаки в числовую матрицу.EncodeLabelsкодирует целевой столбец с названиями классов.TrainTestSplitотделяет часть данных для проверки качества модели.LogisticRegressionобучается на тренировочной выборке.Predictполучает предсказания для тестовой выборки.Metrics.Accuracyсчитает долю правильных ответов.
Результат
Заголовок раздела «Результат»После запуска программы будет выведена точность классификации:
Точность: 0.967Точное значение зависит от разбиения данных и параметров модели.
Что можно поменять
Заголовок раздела «Что можно поменять»Попробуйте увеличить размер тестовой выборки:
Validation.TrainTestSplit(X, y, testRatio := 0.4, seed := 3);Так модель будет обучаться на меньшем количестве данных, а проверяться на большем. Это хороший первый эксперимент: можно увидеть, как разбиение данных влияет на оценку качества.