48 lines
2.1 KiB
ObjectPascal
48 lines
2.1 KiB
ObjectPascal
|
|
// В этом примере одна и та же модель оценивается двумя способами:
|
|||
|
|
// 1. по одной обучающей и тестовой выборке;
|
|||
|
|
// 2. по стратифицированной k-fold кросс-валидации.
|
|||
|
|
//
|
|||
|
|
// Один train/test split даёт быструю, но более случайную оценку.
|
|||
|
|
// Кросс-валидация обычно надёжнее, потому что усредняет результат
|
|||
|
|
// по нескольким разбиениям данных.
|
|||
|
|
|
|||
|
|
uses MLABC;
|
|||
|
|
|
|||
|
|
begin
|
|||
|
|
var ds := Datasets.Iris;
|
|||
|
|
var (trainDs, testDs) := ds.StratifiedTrainTestSplit(testRatio := 0.2, seed := 3);
|
|||
|
|
|
|||
|
|
var XTrain := trainDs.Data.ToMatrix(trainDs.Features);
|
|||
|
|
var yTrain := trainDs.Data.EncodeLabels(trainDs.Target);
|
|||
|
|
|
|||
|
|
var XTest := testDs.Data.ToMatrix(testDs.Features);
|
|||
|
|
var yTest := testDs.Data.EncodeLabels(testDs.Target);
|
|||
|
|
|
|||
|
|
var X := ds.Data.ToMatrix(ds.Features);
|
|||
|
|
var y := ds.Data.EncodeLabels(ds.Target);
|
|||
|
|
|
|||
|
|
var model := new LogisticRegression;
|
|||
|
|
model.Fit(XTrain, yTrain);
|
|||
|
|
|
|||
|
|
var yPred := model.Predict(XTest);
|
|||
|
|
var testAccuracy := Metrics.Accuracy(yTest, yPred);
|
|||
|
|
|
|||
|
|
var cvAccuracy := Validation.StratifiedCrossValidate(
|
|||
|
|
new LogisticRegression,
|
|||
|
|
X, y,
|
|||
|
|
5,
|
|||
|
|
Metrics.Accuracy,
|
|||
|
|
seed := 1
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
Println('Оценка одной и той же модели двумя способами');
|
|||
|
|
Println;
|
|||
|
|
Println($'Точность на стратифицированной тестовой выборке: {testAccuracy:F3}');
|
|||
|
|
Println($'Средняя точность по кросс-валидации: {cvAccuracy:F3}');
|
|||
|
|
Println;
|
|||
|
|
Println('Интерпретация результата:');
|
|||
|
|
Println('- Одна тестовая выборка даёт быстрый, но более случайный результат.');
|
|||
|
|
Println('- Кросс-валидация усредняет качество по нескольким разбиениям.');
|
|||
|
|
Println('- Поэтому её часто используют для более надёжной оценки модели.');
|
|||
|
|
end.
|