En ciencia de datos, las matrices son estructuras fundamentales que permiten representar y manipular datos de forma eficiente. Muchos algoritmos de machine learning, estadística multivariada y álgebra lineal (como regresión lineal, análisis de componentes principales, redes neuronales, etc.) utilizan matrices para calcular predicciones, estimaciones y transformaciones.
Las matrices permiten:
m1 <- matrix(1:6, nrow = 2, ncol = 3)
m1 # Crea una matriz de 2 filas y 3 columnas, llenando por columnas
m2 <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
m2 # Igual que la anterior, pero llena por filas en lugar de columnas
m3 <- matrix(1:9, nrow = 3)
m3 # Matriz 3x3 que es útil para operaciones cuadradas como determinante
m_identidad <- diag(1, nrow = 4, ncol = 4)
m_identidad # Crea una matriz identidad 4x4. Se usa en álgebra lineal.
m_diagonal <- diag(c(5, 10, 15))
m_diagonal # Coloca valores específicos solo en la diagonal principal
m_zeros <- matrix(0, nrow = 3, ncol = 4)
m_zeros # Todos los elementos son 0. Útil para inicialización
m_unos <- matrix(1, nrow = 2, ncol = 5)
m_unos # Todos los elementos son 1. Útil para sumas repetidas
m_nombres <- matrix(1:6, nrow = 2, byrow = TRUE)
rownames(m_nombres) <- c("Fila1", "Fila2")
colnames(m_nombres) <- c("Col1", "Col2", "Col3")
m_nombres # Asignación de nombres para facilitar la lectura
v1 <- c(1, 2, 3)
v2 <- c(4, 5, 6)
m_rbind <- rbind(v1, v2) # Une vectores como filas
m_cbind <- cbind(v1, v2) # Une vectores como columnas
m_rbind
m_cbind
m_logica <- matrix(c(TRUE, FALSE, TRUE, TRUE), nrow = 2)
m_logica # Útil para representar condiciones booleanas
set.seed(123)
m_random <- matrix(sample(1:100, 12, replace = TRUE), nrow = 3, ncol = 4)
m_random # Se utiliza para simulación de datos
t(m3) # Intercambia filas por columnas. Muy útil para reorganización de datos
m4 <- matrix(1:4, nrow = 2)
m5 <- matrix(5:8, nrow = 2)
m4 %*% m5 # Multiplicación matricial, base de regresión lineal y redes neuronales
m6 <- matrix(c(4, 7, 2, 6), nrow = 2)
det(m6) # Determinante, útil para saber si la matriz es invertible
solve(m6) # Inversa de la matriz
apply(m3, 1, sum) # Suma por fila
apply(m3, 2, mean) # Media por columna
scale()
)datos <- matrix(c(15, 20, 35, 40, 10, 25), nrow = 3)
normalizado <- scale(datos) # Estándariza restando media y dividiendo por desviación
normalizado
datos <- matrix(c(1, 2, 3, 4), nrow = 2)
transformacion <- matrix(c(0.6, -0.8, 0.8, 0.6), nrow = 2)
datos %*% transformacion # Simula rotación en PCA
set.seed(42)
X <- matrix(rnorm(20), nrow = 5)
cor(X) # Matriz de correlación de Pearson
conf_matrix <- matrix(c(50, 10, 5, 35), nrow = 2)
colnames(conf_matrix) <- c("Pred:0", "Pred:1")
rownames(conf_matrix) <- c("Real:0", "Real:1")
conf_matrix # Útil en clasificación binaria
puntos <- matrix(c(1,2,3,4), nrow = 2)
distancia <- sqrt(sum((puntos[1,] - puntos[2,])^2))
distancia # Métrica usada en clustering
apply()
metricas <- matrix(c(100, 120, 130, 95, 85, 105), nrow = 3)
colnames(metricas) <- c("Ventas1", "Ventas2")
apply(metricas, 2, mean) # Promedio de cada variable
datos <- matrix(1:20, nrow = 5)
segmento <- datos[1:3, 2:4] # Extrae subconjunto para análisis parcial
segmento
X <- matrix(runif(20, min = 0, max = 100), nrow = 5)
colnames(X) <- paste0("Var", 1:4)
X # Datos simulados para pruebas de modelos
ventas <- matrix(1:12, nrow = 3)
ventas_t <- t(ventas) # Útil para visualizar variables como filas
ventas_t