Я использую мозг для обучения нейронной сети на наборе функций, который включает в себя как положительные, так и отрицательные значения. Но Brain требует входных значений от 0 до 1. Как лучше всего нормализовать мои данные?
Я использую мозг для обучения нейронной сети на наборе функций, который включает в себя как положительные, так и отрицательные значения. Но Brain требует входных значений от 0 до 1. Как лучше всего нормализовать мои данные?
Ответы:
Это называется единой нормализацией. Если у вас есть вектор , вы можете получить его нормализованную версию, скажем, , выполнив:
Найдите самое большое положительное число и самое маленькое (самое отрицательное) число в массиве. Добавьте абсолютное значение наименьшего (самого отрицательного) числа к каждому значению в массиве. Разделите каждый результат на разницу между наибольшим и наименьшим числом.
скажем, у вас есть вектор / массив значений v = [1, -2, 3]
minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}
Выход в конце будет v = [0.6, 0, 1]
. Объяснение:
Перемещение всего диапазона значений с нуля, чтобы у нас не было негативов
Деление значений на (max - min) диапазона, так что max будет 1