Я використовую Brain для тренування нейронної мережі на наборі функцій, що включає як позитивні, так і негативні значення. Але для мозку потрібні вхідні значення від 0 до 1. Який найкращий спосіб нормалізувати мої дані?
Я використовую Brain для тренування нейронної мережі на наборі функцій, що включає як позитивні, так і негативні значення. Але для мозку потрібні вхідні значення від 0 до 1. Який найкращий спосіб нормалізувати мої дані?
Відповіді:
Це називається нормалізацією на основі єдності. Якщо у вас вектор , ви можете отримати нормалізовану його версію, скажімо Z , виконавши:
Знайдіть найбільше додатне число та найменше (найнегативніше) число у масиві. Додайте абсолютне значення найменшого (найнегативнішого) числа до кожного значення масиву. Розділіть кожен результат на різницю між найбільшим і найменшим числом.
скажімо, у вас є вектор / масив значень 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]
. Пояснення:
Натискання на весь діапазон значень починати з 0, щоб у нас не було негативів
Розділити значення на (max - min) діапазону, так що max буде дорівнює 1
Перш ніж це зробити, можливо, ви захочете перевірити, чи не виходять люди. Скажімо, 99% даних лежать в межах (-5, 5), але один маленький хлопець приймає значення 25,0. Ваш нормалізований масив кластеризується навколо (0, 0,3), і це спричинить проблему для вивчення нейронної мережі.