Jak skalować tablicę liczb całkowitych ze znakiem od 0 do 1?


Odpowiedzi:


24

Nazywa się to normalizacją opartą na jedności. Jeśli masz wektor , możesz uzyskać jego znormalizowaną wersję, powiedzmy , wykonując:ZXZ

Z=Xmin(X)max(X)min(X)

1
To podejście jest również znane jako normalizacja min-maks. (Ponieważ używamy wartości min i maks.)
Shagun Sodhani

Czy można użyć tej metody do normalizacji wartości, która reprezentuje procent i może być ujemna, ale zawsze wyższa niż -2% i mniejsza niż 30%? Czy sieci neuronowej nie będzie trudniej uzyskać wskazówkę dotyczącą wartości, jeśli znormalizuję ją w ten sposób?
Ivan

3

Znajdź największą liczbę dodatnią i najmniejszą (najbardziej ujemną) w tablicy. Dodaj wartość bezwzględną najmniejszej (najbardziej ujemnej) liczby do każdej wartości w tablicy. Podziel każdy wynik przez różnicę między największą i najmniejszą liczbą.


@Jathanathan: nie ma znaczenia, o ile obie wartości pochodzą z tej samej tablicy, oryginalnej lub zaktualizowanej. Ponieważ do każdej wartości dodawana jest ta sama liczba, różnica między minimum a maksimum pozostaje taka sama.
RemcoGerlich

1

powiedzmy, że masz wektor / tablicę wartości 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 );}

Wyjście na końcu będzie v = [0.6, 0, 1]. Wyjaśnienie:

  1. Przesuwamy cały zakres wartości, aby zacząć od 0, abyśmy nie mieli negatywów

  2. Dzieląc wartości przez (max - min) zakresu, tak aby max wynosił 1


1

Zanim to zrobisz, możesz sprawdzić wartości odstające. Powiedzmy, że 99% danych mieści się w zakresie (-5, 5), ale jeden mały facet przyjmuje wartość 25,0. Twoja znormalizowana tablica skupiałaby się wokół (0, 0,3), co spowodowałoby problem w nauce sieci neuronowej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.