Wie normalisiere ich Daten zwischen -1 und 1?


36

Ich habe die Min-Max-Normalisierungsformel gesehen, die jedoch Werte zwischen 0 und 1 normalisiert. Wie würde ich meine Daten zwischen -1 und 1 normalisieren? Ich habe sowohl negative als auch positive Werte in meiner Datenmatrix.


1
Wenn Sie in R arbeiten, finden Sie in diesem Thread einige Optionen. Insbesondere hat ein Kommentar zur akzeptierten Antwort diese Funktion, bei der Sie 'newMax' auf 1 und 'newMin' auf -1 setzen und die Funktion für Ihre Daten
ausführen

Sie finden die Referenz bei Wikipedia wie folgt: en.wikipedia.org/wiki/Normalization_(statistics)
salem

Beispiel für Javascript von hier . Funktion convertRange (Wert, r1, r2) {return (Wert - r1 [0]) * (r2 [1] - r2 [0]) / (r1 [1] - r1 [0]) + r2 [0]; } convertRange (328,17, [300,77, 559,22], [1, 10]); >>> 1.9541497388276272
Giuseppe Canale

1
@ Covfefe, wenn Sie immer noch in der Nähe sind, möchten Sie vielleicht eine der Antworten akzeptieren
Simone

Antworten:


97

Mit: normalisieren Sie Ihr Merkmal in . x[0,1]

x=xminxmaxxminx
x[0,1]

Zur Normalisierung in Sie verwenden:[1,1]

x=2xminxmaxxminx1

Im Allgemeinen können Sie in [a, b] immer eine neue Variable x '' 'erhalten :x[a,b]

x=(ba)xminxmaxxminx+a

15
Ehrlich gesagt habe ich keine Zitate dafür. Es ist nur eine lineare Transformation einer Zufallsvariablen. Betrachten Sie die Auswirkung linearer Transformationen auf die Unterstützung einer Zufallsvariablen.
Simone

-1

Ich habe nach dem Zufallsprinzip generierte Daten getestet und

Xout=(ba)XinminXinmaxXinminXin+a

behält die Form der Verteilung nicht bei. Ich würde wirklich gerne sehen, wie dies mit Funktionen von Zufallsvariablen richtig abgeleitet wird.

Der Ansatz, der mir die Form bewahrte, war:

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

woher

σout=ba6

(Ich gebe zu, dass die Verwendung von 6 etwas schmutzig ist ) und

μout=b+a2

und

a und ist der gewünschte Bereich; also laut ursprünglicher frage wäre und .ba=1b=1

Aus dieser Überlegung bin ich zu dem Ergebnis gekommen

Zout=Zin

Xoutμoutσout=Xinμinσin


3
Sind Sie sicher, dass dies garantiert, dass die transformierten Daten innerhalb der Grenzen liegen? In R, versuchen: set.seed(1); scale(rnorm(1000))*.333. Ich bekomme max 1.230871. Ihre Methode scheint nur eine Optimierung der Standardisierung von Daten zu sein, anstatt sie wie gewünscht zu normalisieren. Beachten Sie, dass die Frage nicht nach einer Methode fragt, die die Form der Verteilung beibehält (was eine seltsame Voraussetzung für die Normalisierung wäre).
gung - Wiedereinsetzung von Monica

3
Ich bin nicht sicher, wie die ursprüngliche Transformation die Form der Daten nicht beibehalten kann. Dies entspricht dem Subtrahieren einer Konstanten und anschließenden Teilen durch eine Konstante. Dies ist die Aufgabe Ihres Vorschlags und ändert die Form der Daten nicht. In Ihrem Vorschlag wird davon ausgegangen, dass alle Daten innerhalb von drei Standardabweichungen des Mittelwerts liegen. Dies kann bei kleinen, ungefähr normalverteilten Stichproben sinnvoll sein, bei großen oder nicht normalen Stichproben jedoch nicht.
Noah

1
@Noah Dies ist nicht gleichbedeutend mit Subtrahieren und Teilen durch Konstanten, da die minimalen und maximalen Werte der Daten Zufallsvariablen sind. Tatsächlich sind die meisten zugrunde liegenden Distributionen ziemlich variabel - variabler als die übrigen Daten -, weshalb es normalerweise keine gute Idee ist, sie für irgendeine Form der Standardisierung zu verwenden. In dieser Antwort ist unklar, was und bedeuten oder in welcher Beziehung sie zu den Daten stehen könnten. ab
Whuber

2
@whuber true, aber ich habe gemeint, dass es sich bei einem gegebenen Datensatz (dh bei der Behandlung der Daten als fest) um Konstanten handelt, ebenso wie der Stichprobenmittelwert und die Stichprobenstandardabweichung als Konstanten bei der Standardisierung eines Datensatzes fungieren. Mein Eindruck war, dass OP einen Datensatz normalisieren wollte, keine Verteilung.
Noah

@Noah Ich hatte den gleichen Eindruck, aber ich glaube, der vorliegende Beitrag reagiert möglicherweise auf eine andere Interpretation.
Whuber
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.