Wie skaliere ich ein Array vorzeichenbehafteter Ganzzahlen im Bereich von 0 bis 1?


Antworten:


23

Dies wird als einheitsbasierte Normalisierung bezeichnet. Wenn Sie einen Vektor , können Sie eine normalisierte Version davon erhalten, z. B. Z , indem Sie Folgendes tun:XZ

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

1
Dieser Ansatz wird auch als Min-Max-Normalisierung bezeichnet (da wir
Min-

Ist es in Ordnung, diese Methode zu verwenden, um einen Wert zu normalisieren, der den Prozentsatz darstellt und negativ sein kann, aber immer höher als -2% und niedriger als 30% ist? Wird es für ein neuronales Netzwerk nicht schwieriger sein, den Hinweis auf die Wertbedeutung zu erhalten, wenn ich es auf diese Weise normalisiere?
Ivan

3

Suchen Sie die größte positive Zahl und die kleinste (negativste) Zahl im Array. Addieren Sie den absoluten Wert der kleinsten (negativsten) Zahl zu jedem Wert im Array. Teilen Sie jedes Ergebnis durch die Differenz zwischen der größten und der kleinsten Zahl.


@ Jonathan: Es spielt keine Rolle, solange beide Werte aus demselben Array stammen, original oder aktualisiert. Da jedem Wert dieselbe Zahl hinzugefügt wird, bleibt die Differenz zwischen Minimum und Maximum gleich.
RemcoGerlich

1

Angenommen, Sie haben einen Vektor / ein Array von Werten 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 );}

Ausgabe am Ende wird sein v = [0.6, 0, 1]. Erläuterung:

  1. Drücken Sie den gesamten Wertebereich, um bei 0 zu beginnen, damit wir keine Negative haben

  2. Teilen Sie die Werte durch (max - min) des Bereichs, so dass max 1 ist


1

Bevor Sie dies tun, möchten Sie möglicherweise nach Ausreißern suchen. Angenommen, 99% der Daten liegen im Bereich (-5, 5), aber ein kleiner Kerl nimmt einen Wert von 25,0 an. Ihr normalisiertes Array würde sich um (0, 0,3) gruppieren, und dies würde zu Problemen beim Lernen des neuronalen Netzes führen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.