Normalizza i valori nella matrice R

Jinku Hu 14 luglio 2021
  1. Utilizzare la funzione sweep per eliminare gli array in R
  2. Usa la funzione scale per normalizzare i valori nella matrice R
Normalizza i valori nella matrice R

Questo articolo introdurrà come normalizzare i valori in una matrice R.

Utilizzare la funzione sweep per eliminare gli array in R

La funzione sweep viene utilizzata per eliminare la statistica di riepilogo dall’array. Prende l’array di input come primo argomento e la statistica di riepilogo come terzo argomento. Il secondo argomento della funzione rappresenta il vettore degli indici che devono corrispondere agli elementi del terzo vettore argomento. Il quarto argomento denota la funzione utilizzata per spazzare via l’array. In questo caso, passiamo all’operatore di divisione, che può essere fornito con la notazione tra virgolette - "/". La funzione restituisce la matrice con la stessa forma della matrice di input. Utilizziamo la funzione colSums per calcolare le somme delle colonne dell’array di input dato e passare il risultato come statistica di riepilogo.

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 = "/")

Produzione:

          [,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

Si noti che la funzione sweep può anche con il valore predefinito del parametro funzione. Se l’utente non lo fornisce esplicitamente, si presume che la funzione sia l’operatore di sottrazione. Tieni presente che quando viene passato l’oggetto funzione personalizzata, dovrebbe avere due argomenti. Il seguente frammento di codice sottrae la mediana di ogni colonna dagli elementi nella colonna corrispondente della 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)

Produzione:

     [,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

Usa la funzione scale per normalizzare i valori nella matrice R

Un’altra funzione utile per la normalizzazione dei dati della matrice è scale, che divide ogni colonna della matrice di input per il valore corrispondente dal terzo argomento denominato - scale. Nota che scale accetta l’argomento center utilizzato per il centraggio delle colonne (maggiori dettagli possono essere trovati in questa pagina). In questo caso, assegniamo FALSE a quest’ultimo argomento, indicando che non è necessario eseguire il centraggio della colonna. La funzione colSums viene utilizzata per calcolare le somme per ogni colonna della matrice di input e passarla come argomento 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)

Produzione:

          [,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
Autore: 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

Articolo correlato - R Matrix