ML - устранение неточностей и багов ML - оптимизация производительности DecisionTreeRegressor.Fit, RandomForestRegressor.Fit ML - тесты
60 lines
2.3 KiB
ObjectPascal
60 lines
2.3 KiB
ObjectPascal
// Первый пример работы с pipeline.
|
||
//
|
||
// В этом примере:
|
||
// 1) загружаем готовый датасет Iris;
|
||
// 2) делим данные на обучающую и тестовую выборки;
|
||
// 3) собираем pipeline из масштабирования и модели;
|
||
// 4) обучаем pipeline;
|
||
// 5) оцениваем точность и смотрим вероятности классов.
|
||
//
|
||
// Pipeline удобен тем, что он сам выполняет все шаги по порядку:
|
||
// подготовку признаков, обучение модели и предсказание.
|
||
uses MLABC;
|
||
|
||
begin
|
||
// Загружаем учебный датасет Iris
|
||
var ds := Datasets.Iris;
|
||
|
||
// Берём таблицу данных из датасета
|
||
var df := ds.Data;
|
||
|
||
// Делим данные на обучающую и тестовую выборки
|
||
var (trainDf, testDf) := df.TrainTestSplit(0.2, seed := 3);
|
||
|
||
// Создаём pipeline:
|
||
// сначала масштабируем признаки,
|
||
// затем обучаем логистическую регрессию
|
||
var pipe :=
|
||
DataPipeline.Build(
|
||
TaskKind.tkClassification,
|
||
ds.Target,
|
||
ds.Features,
|
||
new StandardScaler,
|
||
new LogisticRegression
|
||
);
|
||
|
||
// Обучаем весь pipeline на обучающей выборке
|
||
pipe.Fit(trainDf);
|
||
|
||
// Получаем предсказанные классы для тестовой выборки
|
||
var pred := pipe.Predict(testDf);
|
||
|
||
// Получаем правильные метки классов в кодировке pipeline
|
||
var y := pipe.GetEncodedLabels(testDf);
|
||
|
||
// Считаем долю правильных ответов
|
||
Println($'Точность: {Metrics.Accuracy(y, pred):F3}');
|
||
|
||
// Получаем вероятности классов для объектов тестовой выборки
|
||
var proba := pipe.PredictProba(testDf);
|
||
|
||
// Получаем названия классов в правильном порядке
|
||
var classes := pipe.GetClassLabels;
|
||
|
||
Println($'Классы: {classes.JoinToString('', '')}');
|
||
Println('Вероятности для первого объекта:');
|
||
|
||
for var j := 0 to classes.Length - 1 do
|
||
Println($'{classes[j]}: {proba[0, j]:F3}');
|
||
end.
|