unit MLExceptions; interface const ER_DIM_MISMATCH = 'Размерности не совпадают: {0} и {1}!!Dimension mismatch: {0} and {1}'; ER_PARAM_VALUES_EMPTY = 'Список paramValues пуст!!paramValues is empty'; ER_EMPTY_DATASET = 'Набор данных пуст!!Dataset is empty'; ER_LAMBDA_NEGATIVE = 'Параметр lambda должен быть >= 0!!Lambda parameter must be >= 0'; ER_FIT_NOT_CALLED = 'Метод Fit() не вызван!!Fit() must be called first'; ER_MODEL_NULL = 'Модель не может быть nil!!Model cannot be nil'; ER_SELECTKBEST_K_INVALID = 'Параметр k в SelectKBest должен быть >= 1. Передано: {0}.!!SelectKBest parameter k must be >= 1. Given: {0}.'; ER_ARG_NULL = 'Аргумент {0} равен nil!!Argument {0} is null'; ER_EMPTY_DATA = 'Пустой набор данных для {0}!!Empty dataset for {0}'; ER_COLUMN_NOT_FOUND = 'В DataFrame отсутствует столбец "{0}"!!DataFrame does not contain column "{0}"'; ER_NOT_IMPLEMENTED = 'Метод {0} не реализован!!Method {0} is not implemented'; ER_X_NULL = 'X не может быть nil!!X cannot be nil'; ER_Y_NULL = 'y не может быть nil!!y cannot be nil'; ER_XY_SIZE_MISMATCH = 'Размеры X и y не совпадают: X={0}, y={1}!!X and y size mismatch: X={0}, y={1}'; ER_FEATURE_COUNT_MISMATCH = 'Число признаков не совпадает!!Feature count mismatch'; ER_NAN_IN_X = 'X содержит NaN (пропуски)!!X contains NaN'; ER_NAN_IN_Y = 'y содержит NaN (пропуски)!!y contains NaN'; ER_TRAINING_DATA_CONTAINS_NAN = 'Обучающие данные содержат NaN. Обработайте пропуски до вызова Fit.!!' + 'Training data contains NaN. Please handle missing values before calling Fit.'; ER_TRAINING_DATA_CONTAINS_INF = 'Обучающие данные содержат Infinity. Проверьте данные на выбросы.!!' + 'Training data contains Infinity. Please check for extreme values.'; ER_PREDICTION_DATA_CONTAINS_NAN = 'Данные для предсказания содержат NaN. Обработайте пропуски до вызова Predict.!!' + 'Prediction data contains NaN. Please handle missing values before calling Predict.'; ER_PREDICTION_DATA_CONTAINS_INF = 'Данные для предсказания содержат Infinity. Проверьте данные на выбросы.!!' + 'Prediction data contains Infinity. Please check for extreme values.'; ER_MODEL_NOT_FITTED = 'Модель "{0}" не обучена. Сначала вызовите Fit()!!Model "{0}" is not fitted. Call Fit() first'; ER_TEST_RATIO_INVALID = 'Параметр testRatio должен быть в интервале (0,1), получено {0}!!' + 'Parameter testRatio must be in (0,1), got {0}'; ER_PREDICT_NOT_SUPPORTED = 'Модель не поддерживает операцию Predict!!' + 'Model does not support Predict operation'; type /// Базовое исключение ML-библиотеки MLException = class(Exception); /// Попытка использования необученной модели/пайплайна MLNotFittedException = class(MLException); /// Несоответствие размерностей MLDimensionException = class(MLException); MLNotImplementedException = class(MLException); procedure Error(msg: string; params args: array of object); procedure ArgumentError(msg: string; params args: array of object); procedure NotFittedError(msg: string; params args: array of object); procedure DimensionError(msg: string; params args: array of object); procedure ArgumentNullError(msg: string; params args: array of object); procedure ArgumentOutOfRangeError(msg: string; params args: array of object); procedure NotImplementedError(msg: string; params args: array of object); implementation function FormatSafe(msg: string; args: array of object): string; begin var text := GetTranslation(msg); try Result := Format(text, args); except Result := text; // если не совпали {0},{1} — оставляем как есть end; end; procedure Error(msg: string; params args: array of object); begin raise new MLException(FormatSafe(msg, args)); end; procedure ArgumentError(msg: string; params args: array of object); begin raise new System.ArgumentException(FormatSafe(msg, args)); end; procedure NotFittedError(msg: string; params args: array of object); begin raise new MLNotFittedException(FormatSafe(msg, args)); end; procedure DimensionError(msg: string; params args: array of object); begin raise new MLDimensionException(FormatSafe(msg, args)); end; procedure ArgumentNullError(msg: string; params args: array of object); begin raise new System.ArgumentNullException(FormatSafe(msg, args)); end; procedure ArgumentOutOfRangeError(msg: string; params args: array of object); begin raise new System.ArgumentOutOfRangeException(FormatSafe(msg, args)); end; procedure NotImplementedError(msg: string; params args: array of object); begin raise new MLNotImplementedException(FormatSafe(msg, args)); end; end.