Sobes.tech
Junior — Middle
71

Деректерді нормализациялау үшін шаблонды қолданудың мысалын келтіре аласыз ба?

AI-дан жауап

sobes.tech AI

Для нормализации данных часто используют шаблон проектирования "Стратегия" (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

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