Computer Vision con R. OpenCV de andar por casa

Trabajando con Computer Vision aprecio que estamos muy limitados por las máquinas que usamos, o tiene mucho sentido montar GPUs en casa del tamaño del aire acondicionado y por supuesto no tiene sentido el consumo energético que implica. Aquí estoy yo montando una GPU para el análisis de imágenes. Este tema implica que la Computer Vision no la podrá usar el común de los data scientist, a los necesarios conocimientos técnicos y matemáticos se añade el disponer de unos recursos tecnológicos que no están al alcance de cualquiera. Sin embargo, los conocimientos técnicos y matemáticos los puedes adquirir o puedes aprovecharte de los entornos colaborativos. Pero podemos iniciarnos en el reconocimiento de imágenes con R y la librería OpenCV y, si salen algunos temas en los que estoy enredando, es posible que la reducción de dimensionalidad y la geometría nos ahorre máquinas y energía. ...

27 de noviembre de 2020 · rvaquerizo

R + Python = reticulate

He sido reticente a usar reticulate con R porque no me gusta R Markdown y, si he trabajado con Python, no he necesitado R y viceversa. Ahora tengo en mente algún juego/proyecto de esos que se quedan siempre en el tintero por falta de tiempo o interés, pero me están sirviendo para elaborar unos apuntes sobre R Markdown y Python que voy a sintetizaros en esta entrada por si a alguien le fuera de utilidad. ...

26 de noviembre de 2020 · rvaquerizo

Añadiendo gráficos de tarta a nuestros mapas de ggplot con scatterpie

Los gráficos de tarta o pie charts tienen algunos peligros y el ahora escribiente no es muy partidario de su uso; sin embargo, la librería scatterpie facilita mucho su realización en R y quería traer al blog un método más o menos sencillo para entender cómo hacer el gráfico y cómo disponer los datos. Obtención del mapa Se comienza por obtener un mapa por comunidades autónomas con raster que a los seguidores de los artículos de R del blog les será familiar: ...

18 de noviembre de 2020 · rvaquerizo

Calcular porcentajes por grupos con dplyr

A la hora de sumarizar datos con dplyr podemos calcular porcentajes dentro de grupos o subgrupos con transmute. La sintaxis es sencilla, pero tiene la peculiaridad de que solo obtendremos como salida lo que indiquemos en transmute. Mejor lo entendéis en un ejemplo: Conjunto de datos aleatorio de ejemplo: library(dplyr) observaciones <- 100 grupo_1 <- rpois(observaciones, 0.5) grupo_2 <- rpois(observaciones, 1) df <- cbind.data.frame(grupo_1, grupo_2) %>% mutate(id_cliente = n()) Sumarizamos por grupos: df %>% group_by(grupo_1, grupo_2) %>% summarise(clientes = n()) Contamos clientes y calculamos el porcentaje sobre el total: ...

26 de octubre de 2020 · rvaquerizo

Tablas elegantes en #rstats y formattable

Las salidas de la consola de R para muchos de nosotros son más que suficientes. Además, en mi caso particular, prefiero poner las cosas más elegantes en otras herramientas como Excel, Qlik Sense o Tableau. Pero me he dado cuenta de que hay una librería que sí uso cuando directamente copio y pego salidas de R en correos, presentaciones o si empleo markdown (rara vez); esta librería es formattable. Es posible que haya mejores librerías, pero ésta es la que yo uso desde hace un par de años. ...

20 de octubre de 2020 · rvaquerizo

Evita problemas con Excel desde R. De tocar el dato a un proceso

En estos días hemos vivido una situación con Excel y los datos de COVID de UK peculiar. Hemos aparecido todos en las redes sociales para reírnos de Excel y de los que usan Excel. De nuevo partidarios de MATLAB, R, Python… ¡a la gresca! Mi opinión la podéis leer en Twitter y creo que sobre este tema puedo opinar. En mi vida profesional me he especializado en cambiar equipos de negocio; por ese motivo tanto ir y venir de compañía. Uno de esos cambios consiste en transformar superusuarios de Excel a usuarios de herramientas más apropiadas para la gestión de la información. ...

9 de octubre de 2020 · rvaquerizo

Manejo de datos básico con Python datatable

Nueva entrada dedicada al data management con Python, esta vez con datatable. No voy a justificar el uso de datatable antes que pandas, en un vistazo rápido por la web encontráis numerosas ocasiones en las que datatable es más eficiente que pandas en el manejo de datos con Python. En cuanto a la complejidad en el uso de uno u otro mi opinión no es objetiva porque me cuesta mucho trabajar con pandas. ...

8 de octubre de 2020 · rvaquerizo

Transformaciones de variables cuantitativas en modelos binomiales

Para mejorar la capacidad predictiva de nuestros modelos binomiales, es recomendable transformar las variables independientes. Existen técnicas que lo hacen de modo automático, pero hoy os quería mostrar en un vídeo un método “casero” para agrupar una variable cuantitativa con respecto a una variable respuesta, todo muy orientado a que la transformación tenga un sentido de negocio. El código empleado para hacer el vídeo es el siguiente: from urllib.request import urlretrieve import pandas as pd import numpy as np import matplotlib.pyplot as plt link = 'https://raw.githubusercontent.com/yhat/demo-churn-pred/master/model/churn.csv' urlretrieve(link, "churn.csv") df = pd.read_csv("churn.csv") df.head(5) # Visualización de la variable objetivo pd.crosstab(df['Churn?'], columns='count').plot(kind='bar') plt.show() # Creación de la variable target numérica df['churn_num'] = np.where(df['Churn?'] == 'True.', 1, 0) # Análisis de la variable 'Day Mins' print(df['Day Mins'].describe()) plt.hist(df['Day Mins'], bins=20) plt.show() # Transformación casera: agrupamiento por tramos de 10 minutos con límites df['minutos_cat'] = np.where(df['Day Mins'] >= 270, 270, (df['Day Mins'] // 10) * 10) df['minutos_cat'] = np.where(df['minutos_cat'] <= 70, 70, df['minutos_cat']) # Cálculo de tasa de churn por tramo churn_rate = df.groupby('minutos_cat')['churn_num'].mean() counts = df.groupby('minutos_cat')['churn_num'].count() # Gráfico de doble eje: volumen de clientes y tasa de churn fig, ax1 = plt.subplots() ax1.bar(counts.index.astype(str), counts.values, color='skyblue', label='Clientes') ax1.set_xlabel('Tramos de Minutos') ax1.set_ylabel('Número de Clientes') ax1.grid(True, axis='y') ax2 = ax1.twinx() ax2.plot(churn_rate.values, linestyle='-', linewidth=2.0, color='red', label='Tasa de Churn') ax2.set_ylabel('Tasa de Churn') plt.title('Transformación de variable Day Mins') plt.show()

2 de octubre de 2020 · rvaquerizo

Nueva edición del Programa en Big Data y Data Science de la UNED

Ya está abierta la convocatoria para el Programa Modular en Big Data y Data Science aplicados a la Economía y a la Administración y Dirección de Empresas. Es un programa que se imparte $100%$ en línea y tiene el mejor balance entre la visión teórica y la visión práctica en ciencia de datos. Si escogéis el módulo de seguros, allí nos veremos. En el siguiente enlace podréis encontrar más información: ...

29 de septiembre de 2020 · rvaquerizo

Variables categóricas en cajas, `treemap` con R

La representación de variables categóricas en cajas es uno de los gráficos que más utilizo; empezaron a gustarme debido al uso de Qlik Sense y sus gráficos de cajas, me permitían comparar variables categóricas en un período frente a otro. En R podemos usar la librería treemap para realizar estos gráficos y comparar variables categóricas. En este caso interesa comparar una variable dentro de dos grupos. Para ilustrar el ejemplo nos suministran un conjunto de datos con información de un seguro de responsabilidad civil de motocicletas de una compañía sueca. Este conjunto de datos está en la librería CASdatasets de R: ...

29 de septiembre de 2020 · rvaquerizo