Es gibt viele Möglichkeiten, einen geeigneten Vektor $ v $ in den Bereich $ [0, 1] $ und $ [-1, 1] $ zu standardisieren. Erstellen Sie nun $ v $ als Vektor mit Zufallszahlen wie folgt:
random_vector.py
import random
random.seed(1)
v = [random.random() for _ in range(10)]
Im obigen Python-Code wird $ v $ angegeben, zum Beispiel:
So standardisieren Sie diesen Vektor in den Bereich $ [0,1] bzw. [-1,1] $:
-Standardisiert auf $ [0,1] $
\frac{v - min(v)}{max(v) - min(v)}
-Standardisiert auf $ [-1,1] $
\frac{2v - (max(v) + min(v))}{max(v)-min(v)}
Dadurch wird $ v $ linear standardisiert.
Es gibt jedoch Zeiten, in denen Sie einen Vektor auf einen beliebigen Bereich ** standardisieren möchten [newmin, newmax].
Berechnen Sie in einem solchen Fall zunächst zwei Konstanten $ a und b $.
a = (newmax - newmin)/(max(v) - min(v)) \\
b = newmax - a*max(v)
Zu diesem Zeitpunkt gilt das Gleiche für $ b = newmin --a * min (v) $.
Erstellen Sie schließlich eine lineare Funktion ** mit ** $ a $ kippen und $ b $ als Abschnitt und ersetzen Sie den ursprünglichen Vektor $ v $, um einen neuen linear standardisierten Vektor zu erhalten.
normalized\ vector = a*v + b
Dies ist die allgemeine Form zur linearen Standardisierung von Vektoren.
Hier ist der Code, der den Vektor $ v $ im Bereich [newmin, newmax] in Python und Matlab standardisiert.
Python
normalize.py
def normalize(v,newmin,newmax):
a = (newmax - newmin)/(max(v) - min(v))
b = newmax - a*max(v)
return [a*i + b for i in v]
Matlab
normalize.m
function [normalized_vector] = normalize(v, newmin, newmax)
a = (newmax - newmin)/(max(v) - min(v));
b = newmax - max(v)*a;
normalized_vector = a*v + b;
Recommended Posts