En la programación R , una array se puede escalar y centrar usando scale()
la función. Pero, no hay una función incorporada para transformar la array escalada de nuevo a la array original. En este artículo, aprenderemos a transformar la array escalada nuevamente en la array original usando algunos cálculos simples.
Uso de atributos de array
Los atributos de la array escalada se pueden usar para desescalar la array de nuevo a su array original.
R
# Create matrix mt <- matrix(c(1:20), ncol = 5) # Print original matrix cat("Original matrix:\n") print(mt) # Scale the matrix scaled.mt <- scale(mt) # Print Scaled matrix cat("Scaled matrix:\n") print(scaled.mt) # Unscale the matrix unscaled.mt <- t(apply(scaled.mt, 1, function(r) r * attr(scaled.mt, 'scaled:scale') + attr(scaled.mt, 'scaled:center'))) # Print Unscaled matrix cat("Unscaled matrix:\n") print(unscaled.mt)
Producción:
Original matrix: [, 1] [, 2] [, 3] [, 4] [, 5] [1, ] 1 5 9 13 17 [2, ] 2 6 10 14 18 [3, ] 3 7 11 15 19 [4, ] 4 8 12 16 20 Scaled matrix: [, 1] [, 2] [, 3] [, 4] [, 5] [1, ] -1.1618950 -1.1618950 -1.1618950 -1.1618950 -1.1618950 [2, ] -0.3872983 -0.3872983 -0.3872983 -0.3872983 -0.3872983 [3, ] 0.3872983 0.3872983 0.3872983 0.3872983 0.3872983 [4, ] 1.1618950 1.1618950 1.1618950 1.1618950 1.1618950 attr(, "scaled:center") [1] 2.5 6.5 10.5 14.5 18.5 attr(, "scaled:scale") [1] 1.290994 1.290994 1.290994 1.290994 1.290994 Unscaled matrix: [, 1] [, 2] [, 3] [, 4] [, 5] [1, ] 1 5 9 13 17 [2, ] 2 6 10 14 18 [3, ] 3 7 11 15 19 [4, ] 4 8 12 16 20
Uso de la media y la desviación estándar
En este ejemplo, quitaremos la escala de la array escalada utilizando la media y la desviación estándar de la array original.
R
# Create matrix a <- rnorm(5, 5, 2) b <- rnorm(5, 7, 5) mt <- cbind(a, b) # get center and scaling values m <- apply(df, 2, mean) s <- apply(df, 2, sd) # Print original matrix cat("Original matrix:\n") print(mt) # Scale the matrix scaled.mt <- scale(mt, center = m, scale = s) # Print Scaled matrix cat("Scaled matrix:\n") print(scaled.mt) # Unscale the matrix unscaled.mt <- t((t(scaled.mt) * s) + m) # Print Unscaled matrix cat("Unscaled matrix:\n") print(unscaled.mt)
Producción:
Original matrix: a b [1, ] 5.552301 1.9865159 [2, ] 3.936486 17.5327829 [3, ] 5.379720 15.0981877 [4, ] 3.546333 0.5230305 [5, ] 5.043194 2.0930855 Scaled matrix: a b [1, ] 0.01543556 -2.062174 [2, ] -0.69057233 5.252016 [3, ] -0.05997146 4.106591 [4, ] -0.86104456 -2.750713 [5, ] -0.20701146 -2.012036 attr(, "scaled:center") a b 5.516974 6.369655 attr(, "scaled:scale") a b 2.288663 2.125494 Unscaled matrix: a b [1, ] 5.552301 1.9865159 [2, ] 3.936486 17.5327829 [3, ] 5.379720 15.0981877 [4, ] 3.546333 0.5230305 [5, ] 5.043194 2.0930855 attr(, "scaled:center") a b 5.516974 6.369655 attr(, "scaled:scale") a b 2.288663 2.125494
Publicación traducida automáticamente
Artículo escrito por utkarsh_kumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA