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

40 lines
1.3 KiB
ObjectPascal

uses MLABC;
begin
var ds := Datasets.TitanicRu;
var features := ['Класс', 'Пол', 'Возраст', 'БратьяИСупруги', 'РодителиИДети', 'ЦенаБилета', 'ПортПосадки'];
var df := ds.Data.Drop(['Id', 'Имя']);
var (trainDf, testDf) :=
df.StratifiedTrainTestSplit(ds.Target, testRatio := 0.2, seed := 42);
var pipe :=
DataPipeline.Build(
TaskKind.tkClassification,
'Выжил',
features,
new Imputer(['Возраст']),
new Imputer('Саутгемптон', ['ПортПосадки']),
new OneHotEncoder('Пол'),
new OneHotEncoder('ПортПосадки'),
new StandardScaler,
new LogisticRegression(learningRate := 0.01, epochs := 2000)
);
pipe.Fit(trainDf);
var pred := pipe.Predict(testDf);
var y := pipe.GetEncodedLabels(testDf);
var proba := pipe.PredictProba(testDf);
var classes := pipe.GetClassLabels;
Println('TitanicRu: вероятности классов');
Println($'Accuracy = {Metrics.Accuracy(y, pred):F3}');
Println;
Println('Вероятности для первого пассажира тестовой выборки:');
for var j := 0 to classes.Length - 1 do
Println($' {classes[j]}: {proba[0, j]:F3}');
end.