Uso de Tidyverse

Tidyverse es una colección de paquetes de R que los científicos de datos suelen usar en análisis de datos cotidianos. Incluye paquetes para la importación de datos (readr), visualización de datos (ggplot2), manipulación de datos (dplyr, tidyr), programación funcional (purrr) y creación de modelos (tidymodels), etc. Los paquetes de tidyverse están diseñados para trabajar juntos sin problemas y seguir un conjunto coherente de principios de diseño.

Microsoft Fabric distribuye la versión estable más reciente de tidyverse con cada versión en tiempo de ejecución. Importe y empiece a usar los paquetes de R conocidos.

Requisitos previos

  • Abra o cree un cuaderno. Para obtener información sobre cómo hacerlo, consulte Uso de cuadernos de Microsoft Fabric.

  • Establezca la opción de lenguaje en SparkR (R) para cambiar el lenguaje principal.

  • Adjunte el cuaderno a un almacén de lago. En el lado izquierdo, seleccione Añadir para añadir un almacén de lago existente o crear uno.

Cargar tidyverse

# load tidyverse
library(tidyverse)

Importación de datos

readr es un paquete de R que proporciona herramientas para leer archivos de datos rectangulares, como CSV, TSV y archivos de ancho fijo. readr proporciona una manera rápida y sencilla de leer archivos de datos rectangulares, como proporcionar funciones read_csv() y read_tsv() para leer archivos CSV y TSV, respectivamente.

Primero, vamos a crear un data.frame de R, escríbalo en el lago de datos mediante readr::write_csv() y léalo de nuevo con readr::read_csv().

Nota:

Para acceder a los archivos de Lakehouse mediante readr, debe usar la ruta de acceso de la API de archivos. En el explorador de Lakehouse, haga clic con el botón derecho en el archivo o la carpeta a la que desea acceder y copie su ruta de acceso de la API de archivos en el menú contextual.

# create an R data frame
set.seed(1)
stocks <- data.frame(
   time = as.Date('2009-01-01') + 0:9,
   X = rnorm(10, 20, 1),
   Y = rnorm(10, 20, 2),
   Z = rnorm(10, 20, 4)
 )
stocks

A continuación, vamos a escribir los datos en lakehouse mediante la ruta de acceso de la API de archivo.

# write data to lakehouse using the File API path
temp_csv_api <- "/lakehouse/default/Files/stocks.csv"
readr::write_csv(stocks,temp_csv_api)

Lea los datos del lago de datos.

# read data from lakehouse using the File API path
stocks_readr <- readr::read_csv(temp_csv_api)

# show the content of the R date.frame
head(stocks_readr)

Ordenación de datos

tidyr es un paquete de R que proporciona herramientas para trabajar con datos desordenados. Las funciones principales de tidyr están diseñadas para ayudarle a cambiar la forma de los datos en un formato ordenado. Los datos ordenados tienen una estructura específica en la que cada variable es una columna y cada observación es una fila, lo que facilita el trabajo con datos en R y otras herramientas.

Por ejemplo, la función gather() de tidyr se puede usar para convertir datos anchos en datos largos. Este es un ejemplo:

# convert the stock data into longer data
library(tidyr)
stocksL <- gather(data = stocks, key = stock, value = price, X, Y, Z)
stocksL

Programación funcional

purrr es un paquete de R que mejora el kit de herramientas de programación funcional de R proporcionando un conjunto completo y coherente de herramientas para trabajar con funciones y vectores. El mejor lugar para empezar con purrr es la familia de funciones map() que permiten sustituir muchos bucles for por código más sucinto y fácil de leer. Este es un ejemplo de cómo usar map() para aplicar una función a cada elemento de una lista:

# double the stock values using purrr
library(purrr)
stocks_double = map(stocks %>% select_if(is.numeric), ~.x*2)
stocks_double

Manipulación de datos

dplyr es un paquete de R que proporciona un conjunto coherente de verbos que le ayudan a resolver los problemas de manipulación de datos más comunes, como la selección de variables basadas en los nombres, la selección de casos en función de los valores, la reducción de varios valores a un solo resumen y el cambio de la ordenación de las filas, etc. Estos son algunos ejemplos:

#  pick variables based on their names using select() 
stocks_value <- stocks %>% select(X:Z)
stocks_value
# pick cases based on their values using filter()
filter(stocks_value, X >20)
# add new variables that are functions of existing variables using mutate()
library(lubridate)

stocks_wday <- stocks %>% 
    select(time:Z) %>%
    mutate(
        weekday = wday(time)
    )

stocks_wday
# change the ordering of the rows using arrange()
arrange(stocks_wday, weekday)

# reduce multiple values down to a single summary using summarise()
stocks_wday %>% 
    group_by(weekday) %>%
    summarize(meanX = mean(X), n= n())

Visualización de datos

ggplot2 es un paquete de R para crear gráficos mediante declaración, basándose en la gramática de gráficos. Usted proporciona los datos, le indica a ggplot2 cómo asignar variables a la estética, qué primitivas gráficas utilizar, y este se encarga de los detalles. Estos son algunos ejemplos:

# draw a chart with points and lines all in one

ggplot(stocksL, aes(x=time, y=price, colour = stock)) + 
  geom_point()+
  geom_line()

Graph of plot line.

# draw a boxplot

ggplot(stocksL, aes(x=time, y=price, colour = stock)) + 
  geom_boxplot()

Graph of plot box.

Creación de modelos

El marco tidymodels es una colección de paquetes para el modelado y el aprendizaje automático mediante principios tidyverse. Trata una lista de paquetes principales para una amplia variedad de tareas de creación de modelos, como rsample para la división de muestras de conjunto de datos de entrenamiento y prueba, parsnip para la especificación del modelo, recipes para el preprocesamiento de datos, workflows para el modelado de flujos de trabajo, tune para el ajuste de hiperparámetros, yardstick para la evaluación del modelo, broom para la ordenación de salidas del modelo y dials para administrar parámetros de ajuste. Para obtener más información sobre los paquetes, visite el sitio web de tidymodels. Este es un ejemplo de creación de un modelo de regresión lineal para predecir las millas por galón (mpg) de un automóvil en función de su peso (wt):

# look at the relationship between the miles per gallon (mpg) of a car and its weight (wt)
ggplot(mtcars, aes(wt,mpg))+
geom_point()

Graph of mpg and wt.

Desde el gráfico de dispersión, la relación se ve aproximadamente lineal y la varianza parece constante. Vamos a intentar modelar esto mediante la regresión lineal.

library(tidymodels)

# split test and training dataset
set.seed(123)
split <- initial_split(mtcars, prop = 0.7, strata = "cyl")
train <- training(split)
test <- testing(split)


# config the linear regression model
lm_spec <- linear_reg() %>%
  set_engine("lm") %>%
  set_mode("regression")

# build the model
lm_fit <- lm_spec %>%
  fit(mpg ~ wt, data = train)

tidy(lm_fit)

Aplique el modelo de regresión lineal para predecir en el conjunto de datos de prueba.

# using the lm model to predict on test dataset
predictions <- predict(lm_fit, test)
predictions

Echemos un vistazo al resultado del modelo. Podemos dibujar el modelo como un gráfico de líneas y los datos de verdad del campo de prueba como puntos en el mismo gráfico. El modelo tiene buen aspecto.

# draw the model as a line chart and the test data groundtruth as points 
lm_aug <- augment(lm_fit, test) 
ggplot(lm_aug, aes(x = wt, y = mpg)) +
  geom_point(size=2,color="grey70") +
  geom_abline(intercept = lm_fit$fit$coefficients[1], slope = lm_fit$fit$coefficients[2], color = "blue")

Graph of model result.