Más sobre ciencia de datos: cienciadedatos.net o joaquinamatrodrigo.github.io
library(animation)
# Para instalar animation primero hay instalar en el sistema operativo: en el caso
# de ubuntu 16.4 se consigue con los siguientes comandos:
# sudo add-apt-repository -y ppa:cran/imagemagick
# sudo apt-get update
# sudo apt-get install -y libmagick++-dev
# Paquetes para los ejemplos
library(viridis)
library(ggplot2)
library(ranger)
Se muestra una función 3D desde varios ángulos.
funcion <- function(x1, x2){
sin(x2)*exp(1-cos(x1))^2 + cos(x1)*exp(1-sin(x2))^2 + (x1-x2)^2
}
x1 <- seq(-10, 0, length.out = 50)
x2 <- seq(-6.5, 0, length.out = 50)
f_x <- outer(x1, x2, FUN = funcion)
colores <- viridis::magma(n = 100, alpha = 0.7)
z.facet.center <- (f_x[-1, -1] + f_x[-1, -ncol(f_x)] +
f_x[-nrow(f_x), -1] +
f_x[-nrow(f_x), -ncol(f_x)])/4
z.facet.range <- cut(z.facet.center, 100)
# Secuencia de ángulos con los que crear los gráficos
angulos <- seq(0, 360, 10)
saveGIF(
for (i in seq_along(angulos)) {
par(mai = c(0,0,0,0))
persp(x = x1, y = x2, z = f_x,
shade = 0.8,
r = 8,
phi = 10,
theta = angulos[i],
col = colores[z.facet.range],
axes = FALSE
)
},
# Nombre del gif
movie.name = "grafico3d.gif",
# Dimensiones
ani.width = 350,
ani.height = 350,
# Tiempo de duración de cada frame (segundos)
interval = 0.2
)
## [1] TRUE
x <- seq(-10, 10, length=20)
y <- x
f <- function(x, y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
# Secuencia de ángulos con los que crear los gráficos
angulos <- seq(0, 360, 10)
saveGIF(
for (i in seq_along(angulos)) {
par(mai = c(0,0,0,0))
persp(
x = x,
y = y,
z = z,
phi = 20,
theta = angulos[i],
expand = 0.5,
col = "gray30",
border = "green",
axes = FALSE
)
},
# Nombre del gif
movie.name = "grafico3d_2.gif",
# Dimensiones
ani.width = 350,
ani.height = 350,
# Tiempo de duración de cada frame (segundos)
interval = 0.2
)
## [1] TRUE
Se muestra como evoluciona un modelo random forest a medida que se incrementa el número de árboles.
x <- seq(0, pi * 3, length.out = 600)
y <- sin(x) + rnorm(n = length(x), mean = 0, sd = 0.3)
datos <- data.frame(x, y)
arboles <- c(1,2,3, seq(5, 100, 15))
saveGIF(
for (i in seq_along(arboles)) {
modelo <- ranger::ranger(
formula = y ~ x,
num.trees = arboles[i],
max.depth = 3,
data = datos
)
p <- ggplot(data = datos, aes(x, y)) +
geom_point(alpha = 0.7) +
stat_function(
fun = function(.x){
predict(modelo, data = data.frame(x = .x))[["predictions"]]
},
color = "red",
size = 2
) +
labs(title = paste("Modelo random forest: nº árboles =", arboles[i])) +
theme(title = element_text(face = "bold"))
# Al ser un gráfico ggplot2 es necesario hacer el print()
print(p)
},
# Nombre del gif
movie.name = "grafico_ggplot.gif",
# Dimensiones
ani.width = 700,
ani.height = 400,
# Tiempo de duración de cada frame (segundos)
interval = 1
)
## [1] TRUE
Este material, creado por Joaquín Amat Rodrigo, tiene licencia Attribution-NonCommercial-ShareAlike 4.0 International.
Se permite:
Compartir: copiar y redistribuir el material en cualquier medio o formato.
Adaptar: remezclar, transformar y crear a partir del material.
Bajo los siguientes términos:
Atribución: Debes otorgar el crédito adecuado, proporcionar un enlace a la licencia e indicar si se realizaron cambios. Puedes hacerlo de cualquier manera razonable, pero no de una forma que sugiera que el licenciante te respalda o respalda tu uso.
NoComercial: No puedes utilizar el material para fines comerciales.
CompartirIgual: Si remezclas, transformas o creas a partir del material, debes distribuir tus contribuciones bajo la misma licencia que el original.