/
LeonBlue
/
ML_algos_from_scratch_python
Обзор
Документация
Войти
/
LeonBlue
/
ML_algos_from_scratch_python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ml_algorithms/utils/preprocessing.py
172 строки
5 KB
LeonBlue
Добавлены Jupyter ноутбуки для теории и визуализации алгоритмов, обновлены зависимости в requirements.txt, улучшены классы KMeans и LogisticRegression с методами для получения и установки параметров модели.
07 дек 2025, 01:03
07 дек 2025, 01:03
80e326c
Код
Авторство
О чём код?
""" Предобработка данных """ import numpy as np from ..base.base_model import BaseModel class StandardScaler(BaseModel): """ Стандартизация признаков (z-score normalization) Преобразует данные так, чтобы среднее = 0, стандартное отклонение = 1 """ def __init__(self): super().__init__() self.mean_ = None self.std_ = None def fit(self, X, y=None): """ Вычисление среднего и стандартного отклонения для каждого признака Parameters: ----------- X : array-like, shape (n_samples, n_features) Данные для обучения y : None Не используется, для совместимости с API """ X = self._validate_input(X) self.mean_ = np.mean(X, axis=0) self.std_ = np.std(X, axis=0) # Избегаем деления на ноль self.std_[self.std_ == 0] = 1.0 self.is_fitted = True return self def transform(self, X): """ Стандартизация данных Parameters: ----------- X : array-like, shape (n_samples, n_features) Данные для преобразования Returns: -------- X_scaled : array-like Стандартизированные данные """ self._check_is_fitted() X = self._validate_input(X) return (X - self.mean_) / self.std_ def fit_transform(self, X, y=None): """Обучение и преобразование данных""" return self.fit(X, y).transform(X) def predict(self, X): """Алиас для transform для совместимости с BaseModel""" return self.transform(X) def get_params(self): """ Получение параметров модели Returns: -------- params : dict Параметры модели """ return { 'mean_': self.mean_, 'std_': self.std_ } def set_params(self, **params): """ Установка параметров модели Parameters: """ self.mean_ = params.get('mean_', self.mean_) self.std_ = params.get('std_', self.std_) return self class MinMaxScaler(BaseModel): """ Масштабирование признаков в диапазон [0, 1] """ def __init__(self, feature_range=(0, 1)): super().__init__() self.feature_range = feature_range self.min_ = None self.scale_ = None def fit(self, X, y=None): """ Вычисление минимума и максимума для каждого признака Parameters: ----------- X : array-like, shape (n_samples, n_features) Данные для обучения y : None Не используется, для совместимости с API """ X = self._validate_input(X) self.min_ = np.min(X, axis=0) max_ = np.max(X, axis=0) scale_min, scale_max = self.feature_range self.scale_ = (scale_max - scale_min) / (max_ - self.min_) # Избегаем деления на ноль self.scale_[np.isinf(self.scale_)] = 1.0 self.is_fitted = True return self def transform(self, X): """ Масштабирование данных Parameters: ----------- X : array-like, shape (n_samples, n_features) Данные для преобразования Returns: -------- X_scaled : array-like Масштабированные данные """ self._check_is_fitted() X = self._validate_input(X) scale_min, _ = self.feature_range return scale_min + (X - self.min_) * self.scale_ def fit_transform(self, X, y=None): """Обучение и преобразование данных""" return self.fit(X, y).transform(X) def predict(self, X): """Алиас для transform для совместимости с BaseModel""" return self.transform(X) def get_params(self): """ Получение параметров модели Returns: -------- params : dict Параметры модели """ return { 'feature_range': self.feature_range, 'min_': self.min_, 'scale_': self.scale_ } def set_params(self, **params): """ Установка параметров модели Parameters: """ self.feature_range = params.get('feature_range', self.feature_range) self.min_ = params.get('min_', self.min_) self.scale_ = params.get('scale_', self.scale_) return self