Можете привести пример использования шаблона для реализации нормализации данных?

Для нормализации данных часто используют шаблон проектирования "Стратегия" (Strategy), который позволяет менять алгоритм нормализации без изменения кода, использующего эти данные.

Короткий ответ

Что ответить на собеседовании

Для нормализации данных часто используют шаблон проектирования "Стратегия" (Strategy), который позволяет менять алгоритм нормализации без изменения кода, использующего эти данные.

Подробный разбор

Ответ с пояснениями

Для нормализации данных часто используют шаблон проектирования "Стратегия" (Strategy), который позволяет менять алгоритм нормализации без изменения кода, использующего эти данные.

Пример на Python:

from abc import ABC, abstractmethod

class NormalizationStrategy(ABC):
    @abstractmethod
    def normalize(self, data):
        pass

class MinMaxNormalization(NormalizationStrategy):
    def normalize(self, data):
        min_val = min(data)
        max_val = max(data)
        return [(x - min_val) / (max_val - min_val) for x in data]

class ZScoreNormalization(NormalizationStrategy):
    def normalize(self, data):
        mean = sum(data) / len(data)
        variance = sum((x - mean) ** 2 for x in data) / len(data)
        std_dev = variance ** 0.5
        return [(x - mean) / std_dev for x in data]

class DataProcessor:
    def __init__(self, strategy: NormalizationStrategy):
        self.strategy = strategy

    def process(self, data):
        return self.strategy.normalize(data)

# Использование
raw_data = [10, 20, 30, 40, 50]

processor = DataProcessor(MinMaxNormalization())
print(processor.process(raw_data))  # Нормализация Min-Max

processor.strategy = ZScoreNormalization()
print(processor.process(raw_data))  # Нормализация Z-Score

Такой подход позволяет легко менять способ нормализации, не меняя остальной код.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее