Diapositivas de mi charla "Datos, modelos y parámetros"
Las diapositivas de mi charla Datos, modelos y parámetros en el grupo Machine Learning Spain pueden verse/bajarse de aquí.
Las diapositivas de mi charla Datos, modelos y parámetros en el grupo Machine Learning Spain pueden verse/bajarse de aquí.
Si quieres aprender R, bien puedes matricularte en el curso que voy a impartir en KSchool. Es un programa de iniciación a R centrado en aquellos aspectos de R que más usan en la práctica diaria quienes trabajan con datos (y no son estadísticos duros). ¡Y ya vamos por la tercera edición!
Tendrá lugar durante el mes de junio (y un poco de julio). Son diez sesiones de tres horas. Los detalles están aquí.
Cada día soy más inculto. He dejado de escuchar música; en el último concierto al que fui maté el tiempo con un jueguito del móvil; la taquillera del teatro de mi barrio se niega a venderme entradas por cuestiones formales (que si son las 18:01 y la taquilla cierra a las 18:00); hace años que no leo ficción; en el Reina Sofía, donde otros ven arte yo encuentro desgana y mis gustos cinematográficos son de lo más estragado.
Los viejos del lugar recordarán esto, donde agrupo trayectorias usando k-medias a pelo.
El paquete kmlShape usa la distancia de Fréchet para hacer algo parecido: buscar trayectorias geométricamente similares.
El código es
library(kmlShape)
library(tseries)
library(zoo)
library(XML)
library(reshape)
library(ggplot2)
foo <- function(
simbolo, final = Sys.time(),
profundidad = 30 * 24 * 3600) {
precios <- get.hist.quote(
instrument= simbolo,
start = final - profundidad,
end = final, quote=c("AdjClose"),
provider="yahoo", origin="1970-01-01",
compression="d", retclass="zoo")
colnames(precios) <- simbolo
return(precios)
}
# lista de símbolos del ibex
tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]]
tmp <- as.character(tmp$V1[-(1:6)])
ibex <- do.call(merge,
sapply(simbolos, foo, simplify = F))
ibex.scaled <- data.frame(t(scale(ibex)))
tmp <- cldsWide(ibex.scaled)
res <- kmlShape(tmp, 4, toPlot = "none")
tmp <- data.frame(
id = rownames(ibex.scaled),
cluster = res@clusters, ibex.scaled)
tmp <- melt(tmp, id.vars = c("id", "cluster"))
tmp$fecha <- as.Date(tmp$variable, "X%Y.%m.%d")
ggplot(tmp, aes(x=fecha, y=value, group=id)) +
geom_line() + facet_wrap(~cluster)y el resultado,
Me piden bibliografía para unos cursos de ciencia de datos. En particular, de estadística básica. Un texto que reúna los conceptos fundamentales de la cosa para quienes o no los aprendieron en su día o los olvidaron por el camino. Tiene que cumplir algunos requisitos mínimos:
Finalmente, si está escrito escrito en español y usa R, mejor aún.
Supongo que a estas alturas todos conoceréis feather y rPython. Hoy los vais a ver trabajar juntos.
Primero solo en R:
library(feather)
path <- "/tmp/my_data.feather"
write_feather(cars, path)
my_cars <- read_feather(path)Ahora, para pasarle datos a Python:
library(rPython)
python.exec("import feather")
python.exec("a = feather.read_dataframe('/tmp/my_data.feather')")
python.exec("print a")Y, finalmente, para crear datos grandes en Python y devolvéselos a R:
python.exec("import numpy as np")
python.exec("import pandas as pd")
python.exec("arr = np.random.randn(10000000)")
python.exec("arr[::10] = np.nan")
python.exec("df = pd.DataFrame({'column_{0}'.format(i): arr for i in range(10)})")
python.exec("feather.write_dataframe(df, '/tmp/test.feather')")
python.data <- read_feather("/tmp/test.feather")
dim(python.data)
#[1] 10000000 10Los tiempos, que los mida cada cual.
Porque voy a dar una charla en él. Es este jueves, por la tarde, en el Campus de Google de Madrid (los detalles).
Se tratará de una introducción a y justificación de aproximaciones más bayesianas de lo habitual a problemas reales del análisis de datos. Que comenzará con una explicación sobre cuándo 100% no significa 100% para terminar con lo que viene siéndome habitual últimamente: un ejemplo en rstan con su discusión.
La solución que presenté el otro día para resolver el problema en cuestión, tal como indicó Iñaki Úcar, es demasiado aparatosa. La alternativa a mi propuesta
ssh -ND 2001 miusuario@datanalytics.com
y todo lo que sigue es crear un túnel ssh mediante
ssh -NL 2001:localhost:8787 miusuario@datanalytics.com
y conectarse a la sesión remota de RStudio apuntando en cualquier navegador a http://localhost:2001.
El comando anterior exige la debida exégesis, que nunca había tenido del todo clara. Lo que hace es, primero, crear una conexión entre mi ssh local, el ordenador en el que lanzo el comando, y mi ssh remoto (el servidor con nombre datanalytics.com). Eso es lo que verán los terceros: una conexión ssh entre dos máquinas.
Finalmente, instalé RStudio Server en la máquina que está sirviéndote esta página. Pero no dejo abierto el puerto 8787 al exterior ni jarto de vino.
(De hecho, veréis que desde hace un tiempo a este blog escucha en el puerto 443 y, aunque esa es otra historia, utiliza HTTP/2).
Así que lo he configurado para que solo se pueda acceder a él desde localhost, i.e., que no admita conexiones remotas, añadiendo la línea