Normaliser les valeurs dans la matrice R

Jinku Hu 14 juillet 2021
  1. Utilisez la fonction sweep pour balayer les tableaux dans R
  2. Utilisez la fonction scale pour normaliser les valeurs dans la matrice R
Normaliser les valeurs dans la matrice R

Cet article présentera comment normaliser les valeurs dans une matrice R.

Utilisez la fonction sweep pour balayer les tableaux dans R

La fonction sweep est utilisée pour balayer la statistique récapitulative du tableau. Il prend le tableau d’entrée comme premier argument et la statistique récapitulative comme troisième argument. Le deuxième argument de la fonction représente le vecteur d’indices qui doivent correspondre aux éléments du troisième vecteur d’argument. Le quatrième argument désigne la fonction utilisée pour balayer le tableau. Dans ce cas, nous passons l’opérateur de division, qui peut être fourni avec la notation entre guillemets - "/". La fonction renvoie le tableau avec la même forme que le tableau d’entrée. Nous utilisons la fonction colSums pour calculer les sommes des colonnes du tableau d’entrée donné et transmettons le résultat en tant que statistique récapitulative.

require(stats)

v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)

sweep(m1, 2, colSums(m1), FUN = "/")

Production:

          [,1]      [,2]      [,3]      [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464

Notez que la fonction sweep peut également être utilisée avec la valeur par défaut du paramètre de fonction. Si l’utilisateur ne le fournit pas explicitement, la fonction est supposée être l’opérateur de soustraction. N’oubliez pas que lorsque l’objet de fonction personnalisée est transmis, il doit avoir deux arguments. L’extrait de code suivant soustrait la médiane de chaque colonne des éléments de la colonne correspondante de la matrice.

require(stats)

v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)

med.att <- apply(m1, 2, median)
sweep(m1, 2, med.att)

Production:

     [,1] [,2] [,3] [,4]
[1,] -0.1 -0.8  0.0  2.1
[2,]  0.0  1.8 -1.5  0.0
[3,]  3.1  0.0  2.4 -4.1

Utilisez la fonction scale pour normaliser les valeurs dans la matrice R

Une autre fonction utile pour la normalisation des données matricielles est scale, qui divise chaque colonne de la matrice d’entrée par la valeur correspondante du troisième argument nommé - scale. Notez que scale prend l’argument center qui est utilisé pour le centrage des colonnes (plus de détails peuvent être trouvés sur cette page). Dans ce cas, nous affectons FALSE à ce dernier argument, indiquant que le centrage des colonnes n’a pas besoin d’être fait. La fonction colSums est utilisée pour calculer les sommes pour chaque colonne de la matrice d’entrée et la passer comme argument scale.

require(stats)

v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)

c1 <- colSums(m1)
scale(m1, center = FALSE, scale = c1)

Production:

          [,1]      [,2]      [,3]      [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464
attr(,"scaled:scale")
[1]  6.6  7.3 16.8 18.1
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - R Matrix