Изучение различных методов нормализации значений в C#

В C# нормализация значений — обычная задача предварительной обработки данных, при которой мы преобразуем данные к стандартному диапазону или распределению. В этой статье блога мы рассмотрим несколько методов выполнения этой задачи с использованием разговорного языка и попутно предоставим примеры кода.

Метод 1: минимальное и максимальное масштабирование

Масштабирование Min-Max – это простой и широко используемый метод нормализации значений. Он масштабирует данные в заданном диапазоне, обычно от 0 до 1. Вот пример того, как это реализовать в C#:

double NormalizeMinMax(double value, double min, double max)
{
    return (value - min) / (max - min);
}

Метод 2: стандартизация Z-показателя

Стандартизация Z-показателя, также известная как стандартное масштабирование, преобразует данные так, чтобы они имели среднее значение 0 и стандартное отклонение 1. Этот метод полезен при работе с данными, которые соответствуют распределению Гаусса. Вот пример:

double NormalizeZScore(double value, double mean, double standardDeviation)
{
    return (value - mean) / standardDeviation;
}

Метод 3: десятичное масштабирование

Десятичное масштабирование – это метод, при котором значения масштабируются путем деления их на степень 10. Степень определяется величиной максимального абсолютного значения в наборе данных. Этот метод сохраняет относительный порядок значений. Вот пример:

double NormalizeDecimalScaling(double value, int power)
{
    return value / Math.Pow(10, power);
}

Метод 4: логарифмическое масштабирование

Логарифмическое масштабирование полезно при работе с асимметричными данными или значениями в широком диапазоне. Он применяет логарифмическую функцию для сжатия данных. Вот пример:

double NormalizeLogarithmic(double value)
{
    return Math.Log(value);
}

Метод 5: масштабирование единичного вектора

Масштабирование единичного вектора, также известное как векторная нормализация, масштабирует значения до длины, равной 1. Оно часто используется в алгоритмах машинного обучения, основанных на косинусном подобии. Вот пример:

double[] NormalizeUnitVector(double[] values)
{
    double sumOfSquares = values.Sum(v => v * v);
    double factor = 1.0 / Math.Sqrt(sumOfSquares);
    return values.Select(v => v * factor).ToArray();
}

В этой статье мы рассмотрели несколько методов нормализации значений в C#. Каждый метод имеет свою цель и подходит для разных сценариев. Используя эти методы, вы можете эффективно предварительно обработать данные и подготовить их для дальнейшего анализа или задач машинного обучения.