[PYTHON] Standardisez le vecteur dans n'importe quelle plage

Il existe de nombreuses possibilités de standardiser un vecteur approprié $ v $ dans la plage $ [0, 1] $ et $ [-1, 1] $. Créez maintenant $ v $ en tant que vecteur avec des nombres aléatoires comme celui-ci:

random_vector.py



import random
random.seed(1)
v = [random.random() for _ in range(10)]

Dans le code python ci-dessus, $ v $ est donné, par exemple:

figure_1.png

Pour standardiser ce vecteur dans la plage $ [0,1], [-1,1] $, respectivement:

-Standardisé à $ [0,1] $


\frac{v - min(v)}{max(v) - min(v)}

-Standardisé à $ [-1,1] $


\frac{2v - (max(v) + min(v))}{max(v)-min(v)}

Cela normalisera linéairement $ v $.

figure_2.png

Cependant, il y a des moments où vous voulez ** standardiser ** un vecteur à ** plage arbitraire ** [newmin, newmax].

Dans un tel cas, calculez d'abord deux constantes $ a et b $.


a = (newmax - newmin)/(max(v) - min(v)) \\
b = newmax - a*max(v)

À ce stade, il en va de même pour $ b = newmin --a * min (v) $.

Enfin, créez une fonction linéaire ** avec ** $ a $ inclinable et $ b $ comme section, et remplacez le vecteur d'origine $ v $ pour obtenir un nouveau vecteur normalisé linéairement.


normalized\ vector = a*v + b

C'est la forme générale de normalisation linéaire des vecteurs.

Voici le code qui standardise le vecteur $ v $ dans la plage [newmin, newmax] en Python et Matlab.


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

Standardisez le vecteur dans n'importe quelle plage
[Introduction à Python] Comment itérer avec la fonction range?
La route vers Pythonista
La route vers Djangoist
Keras Je veux obtenir la sortie de n'importe quelle couche !!
Comment utiliser le générateur
La route pour télécharger Matplotlib
Comment utiliser le décorateur
Comment augmenter l'axe
Comment démarrer la première projection