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