pascalabcnet/InstallerSamples/MachineLearning/06_Pipelines/01_DataPipeline_Classification.pas
Mikhalkovich Stanislav 7eaddd9a54 ML - множество примеров
ML - устранение неточностей и багов
ML - оптимизация производительности DecisionTreeRegressor.Fit, RandomForestRegressor.Fit
ML - тесты
2026-05-07 22:53:13 +03:00

44 lines
1.3 KiB
ObjectPascal

// Строго типизированный pipeline для классификации на DataFrame.
//
// Pipeline сам:
// • проверяет схему таблицы;
// • применяет preprocessing к признакам;
// • кодирует целевую переменную внутри себя;
// • передаёт матрицу признаков в модель.
//
// Здесь показан канонический сценарий:
// Iris -> Train/Test Split -> StandardScaler -> LogisticRegression.
uses MLABC;
begin
var ds := Datasets.Iris;
var df := ds.Data;
var (trainDf, testDf) := df.TrainTestSplit(0.2, seed := 3);
var pipe :=
DataPipeline.Build(
TaskKind.tkClassification,
ds.Target,
ds.Features,
new StandardScaler,
new LogisticRegression
);
pipe.Fit(trainDf);
var pred := pipe.Predict(testDf);
var y := pipe.GetEncodedLabels(testDf);
Println('Точность:', Metrics.Accuracy(y, pred):0:3);
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]:0:3);
end.