pascalabcnet/bin/Lib/MLCoreABC.pas
Mikhalkovich Stanislav 398ea2440f mlpIPELINEabc - НОВЫЙ МОДУЛЬ
DataPipeline - закончен
2026-02-26 22:40:34 +03:00

91 lines
4.9 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit MLCoreABC;
interface
uses LinearAlgebraML;
type
/// Базовый интерфейс шага конвейера машинного обучения.
/// Используется для объединения всех типов шагов
/// (DataFrame-преобразователей, матричных трансформеров и моделей)
/// в единую последовательность выполнения внутри различных Pipeline
IPipelineStep = interface end;
/// Интерфейс шага конвейера, работающего в числовом (матричном) пространстве.
/// Реализуется трансформерами и моделями, которые принимают на вход Matrix и Vector
/// и используются в Matrix-уровне Pipeline
IMatrixStep = interface(IPipelineStep) end;
/// Интерфейс шага конвейера, работающего на уровне DataFrame.
/// Реализуется препроцессорами, которые выполняют преобразования табличных данных
/// до перехода в числовое (Matrix) представление
IDataStep = interface(IPipelineStep) end;
/// Базовый интерфейс модели машинного обучения
IModel = interface(IMatrixStep)
function Fit(X: Matrix; y: Vector): IModel;
function Predict(X: Matrix): Vector;
function Clone: IModel;
end;
/// Интерфейс древовидной модели машинного обучения
ITreeModel = interface(IModel)
function FeatureImportances: Vector;
end;
/// Интерфейс классификатора.
/// Наследуется от IModel.
/// Предназначен для моделей, выполняющих классификацию
/// (предсказание меток классов).
IClassifier = interface(IModel)
end;
/// Интерфейс классификатора, возвращающего вероятности.
/// Расширяет IClassifier.
/// Используется для моделей, которые умеют оценивать
/// вероятность принадлежности к классу.
/// Позволяет получать значения в диапазоне (0, 1)
/// вместо только итогового решения.
IProbabilisticClassifier = interface(IClassifier)
/// Возвращает матрицу вероятностей размера (nSamples × nClasses).
/// Столбцы соответствуют классам в порядке внутреннего кодирования модели
function PredictProba(X: Matrix): Matrix;
/// Возвращает массив меток классов в порядке столбцов PredictProba.
function GetClasses: array of real;
end;
/// Интерфейс регрессионной модели.
/// Наследуется от IModel.
/// Предназначен для моделей, предсказывающих числовые значения.
IRegressor = interface(IModel)
end;
/// Базовый интерфейс преобразования признаков.
/// Используется для масштабирования, отбора,
/// уменьшения размерности и других преобразований данных.
ITransformer = interface(IMatrixStep)
/// Обучает преобразование на данных.
/// Запоминает необходимые параметры,
/// которые будут использоваться при Transform.
function Fit(X: Matrix): ITransformer;
/// Применяет обученное преобразование к данным.
/// Возвращает новую матрицу признаков.
function Transform(X: Matrix): Matrix;
function Clone: ITransformer;
end;
/// Интерфейс преобразования признаков с учётом целевой переменной.
/// Используется для методов отбора признаков и других процедур,
/// в которых при обучении требуется вектор целевых значений.
ISupervisedTransformer = interface(ITransformer)
/// Обучает преобразование на данных с использованием
/// как признаков X, так и целевой переменной y.
/// Запоминает необходимые параметры,
/// которые будут использоваться при Transform.
function Fit(X: Matrix; y: Vector): ITransformer;
end;
implementation
end.