From 18e4c5ba79eed83a2af3c2a0dc9ef9ee5d6c8d56 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Wed, 11 Mar 2026 12:13:41 +0300 Subject: [PATCH] =?UTF-8?q?Utils=20=D1=8D=D1=82=D0=BE=D1=82=20=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D1=87=D0=B0=D1=81=D1=82=D0=BD=D1=8B=D0=B9=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=BE=D0=B4=D0=BD=D0=BE=D0=B9=20=D1=84=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=B4=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CoreUtils/Utils.csproj | 2 +- bin/Lib/DataAdapters.pas | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CoreUtils/Utils.csproj b/CoreUtils/Utils.csproj index 886cfb913..e5a55dfa0 100644 --- a/CoreUtils/Utils.csproj +++ b/CoreUtils/Utils.csproj @@ -3,7 +3,7 @@ net40 - ..\..\bin\ + ..\bin\ false false diff --git a/bin/Lib/DataAdapters.pas b/bin/Lib/DataAdapters.pas index 525885a94..7959c7f68 100644 --- a/bin/Lib/DataAdapters.pas +++ b/bin/Lib/DataAdapters.pas @@ -12,7 +12,21 @@ uses LinearAlgebraML; /// возможные небольшие численные ошибки function LabelsToInts(y: Vector): array of integer; +/// Кодирует строковые метки классов в целочисленные индексы. +/// Каждому уникальному значению присваивается номер 0,1,2,... +/// Порядок кодирования соответствует порядку первого появления меток. +/// Используется при обучении моделей и визуализации. function EncodeLabels(labels: array of string): array of integer; + +/// Преобразует целочисленные индексы классов обратно в строковые метки. +/// Массив classes задаёт соответствие: classes[i] — имя класса с индексом i. +/// Используется для получения текстовых предсказаний моделей. +function DecodeLabels(y: array of integer; classes: array of string): array of string; + +/// Возвращает список уникальных меток классов. +/// Порядок соответствует первому появлению значений во входном массиве. +/// Используется для определения множества классов в задаче классификации. +function UniqueLabels(labels: array of string): array of string; implementation @@ -107,4 +121,19 @@ begin end; end; +function DecodeLabels(y: array of integer; classes: array of string): array of string; +begin + var res := new string[y.Length]; + + for var i := 0 to y.Length-1 do + res[i] := classes[y[i]]; + + Result := res; +end; + +function UniqueLabels(labels: array of string): array of string; +begin + Result := labels.Distinct.ToArray; +end; + end. \ No newline at end of file