Як нормалізувати дані від -1 до 1?


36

Я бачив формулу нормалізації min-max, але вона нормалізує значення від 0 до 1. Як я можу нормалізувати свої дані від -1 до 1? У матриці даних у мене є як негативні, так і позитивні значення.


1
Якщо ви працюєте в R, перегляньте цю тему для декількох варіантів. Зокрема, коментар до прийнятої відповіді має цю функцію, коли ви встановлюєте "newMax" на 1, а "newMin" на -1 та запускаєте функцію на своїх даних
mtreg

Ви можете знайти посилання на Вікіпедії наступним чином : en.wikipedia.org/wiki/Normalization_(statistics)
Салем

Приклад Javascript, взятий звідси . функція convertRange (значення, r1, r2) {return (значення - r1 [0]) * (r2 [1] - r2 [0]) / (r1 [1] - r1 [0]) + r2 [0]; } convertRange (328.17, [300.77, 559.22], [1, 10]); >>> 1.9541497388276272
Джузеппе Канале

1
@covfefe, якщо ви все ще знаходитесь навколо, можливо, ви захочете прийняти одну з відповідей
Сімоне

Відповіді:


97

x=xminxmaxxminx
x[0,1]

Для нормалізації в ви можете використовувати:[1,1]

x=2xminxmaxxminx1

Загалом, ви завжди можете отримати нову змінну x у [a,b] :

x=(ba)xminxmaxxminx+a

15
Чесно кажучи, у мене немає цитат за це. Це просто лінійне перетворення випадкової величини. Подивіться на вплив лінійних перетворень на опору випадкової величини.
Сімоне

-1

Я перевіряв на випадково згенерованих даних та

Xout=(ba)XinminXinmaxXinminXin+a

не зберігає форму розподілу. Дуже хотілося б побачити правильне виведення цього за допомогою функцій випадкових змінних.

Підхід, який зберігав форму для мене, використовував:

Xout=Xinμinσinσout+μout

де

σout=ba6

(Я визнаю, що використання 6 трохи брудне ) і

μout=b+a2

і

a і - бажаний діапазон; так що за оригінальним питанням було б і .ba=1b=1

Я прийшов до результату з цих міркувань

Zout=Zin

Xoutμoutσout=Xinμinσin


3
Ви впевнені, що це гарантує, що трансформовані дані будуть лежати в межах? В R, спробуйте: set.seed(1); scale(rnorm(1000))*.333. Я отримую макс 1.230871. Ваш метод, здається, є лише налаштуванням стандартизації даних, а не нормалізацією їх за потребою. Зауважте, що питання не задає метод, який зберігає форму розподілу (що було б дивним вимогою для нормалізації).
gung - Відновіть Моніку

3
Я не впевнений, як оригінальна трансформація не змогла зберегти форму даних. Це еквівалентно відніманню константи, а потім діленню на константу, що і робить ваша пропозиція, а це не змінює форму даних. Ваша пропозиція передбачає, що всі дані потрапляють у три стандартні відхилення від середнього значення, що може бути дещо розумним при малих, приблизно нормально розподілених зразках, але не з великими або ненормальними вибірками.
Ной

1
@Noah Це не рівнозначно відніманню та діленню на константи, оскільки min і max даних є випадковими змінними. Дійсно, для більшості базових дистрибутивів вони досить мінливі - більш мінливі, ніж решта даних - тому використання їх для будь-якої форми стандартизації зазвичай не є хорошою ідеєю. У цій відповіді незрозуміло, що означають і або як вони можуть бути пов’язані з даними. ab
блукання

2
@whuber правда, але я мав на увазі, що в заданому наборі даних (тобто трактуванні даних як фіксованих) вони є константами, таким же чином, як середнє значення вибірки та функція стандартного відхилення вибірки, як константи при стандартизації набору даних. Моє враження було, що ОП хотів нормалізувати набір даних, а не розподіл.
Ной

@Noah У мене було таке ж враження, але я вважаю, що цей пост може відповісти на інше тлумачення.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.