Usare Tidyverse

Tidyverse è una raccolta di pacchetti R che i data scientist usano comunemente nelle analisi dei dati quotidiane. Include pacchetti per l'importazione dei dati (readr), la visualizzazione dei dati (ggplot2), la manipolazione dei dati (dplyr, tidyr), la programmazione funzionale (purrr) e la compilazione di modelli (tidymodels) e così via. I pacchetti in tidyverse sono progettati per lavorare insieme senza problemi e seguire un set coerente di principi di progettazione.

Microsoft Fabric distribuisce la versione stabile più recente di tidyverse con ogni versione di runtime. Importare e iniziare a usare i pacchetti R familiari.

Prerequisiti

  • Ottenere una sottoscrizione di Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione gratuita di Microsoft Fabric.

  • Accedere a Microsoft Fabric.

  • Usare il commutatore esperienza sul lato sinistro della home page per passare all'esperienza di data science di Synapse.

    Screenshot of the experience switcher menu, showing where to select Data Science.

  • Aprire o creare un notebook. Per informazioni su come, vedere Come usare i notebook di Microsoft Fabric.

  • Impostare l'opzione del linguaggio su SparkR (R) per modificare il linguaggio primario.

  • Collegare il notebook a una lakehouse. Sul lato sinistro selezionare Aggiungi per aggiungere una lakehouse esistente o per creare una lakehouse.

Carico tidyverse

# load tidyverse
library(tidyverse)

Importazione dei dati

readr è un pacchetto R che fornisce strumenti per la lettura di file di dati rettangolari, ad esempio CSV, TSV e file a larghezza fissa. readr offre un modo rapido e intuitivo per leggere file di dati rettangolari, ad esempio fornire funzioni read_csv() e read_tsv() per leggere rispettivamente i file CSV e TSV.

Creare prima un data.frame R, scriverlo in lakehouse usando readr::write_csv() e leggerlo di nuovo con readr::read_csv().

Nota

Per accedere ai file Lakehouse usando readr, è necessario usare il percorso dell'API File. In Lakehouse Explorer fare clic con il pulsante destro del mouse sul file o sulla cartella a cui si vuole accedere e copiare il percorso dell'API File dal menu contestuale.

# 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

Scrivere quindi i dati in lakehouse usando il percorso dell'API File.

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

Leggere i dati da lakehouse.

# 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)

Ordinare i dati

tidyr è un pacchetto R che fornisce strumenti per l'uso di dati disordinati. Le funzioni principali in tidyr sono progettate per aiutare a rimodellare i dati in un formato ordinato. I dati ordinati hanno una struttura specifica in cui ogni variabile è una colonna e ogni osservazione è una riga, che semplifica l'uso dei dati in R e altri strumenti.

Ad esempio, la gather() funzione in tidyr può essere usata per convertire dati wide in dati lunghi. Ecco un esempio:

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

Programmazione funzionale

purrr è un pacchetto R che migliora il toolkit di programmazione funzionale di R fornendo un set completo e coerente di strumenti per l'uso di funzioni e vettori. Il punto migliore per iniziare purrr è la famiglia di map() funzioni che consentono di sostituire molti cicli for con codice più conciso e più facile da leggere. Ecco un esempio di utilizzo map() di per applicare una funzione a ogni elemento di un elenco:

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

Manipolazione dei dati

dplyr è un pacchetto R che fornisce un set coerente di verbi che consentono di risolvere i problemi di manipolazione dei dati più comuni, ad esempio la selezione di variabili in base ai nomi, la selezione dei case in base ai valori, la riduzione di più valori a un singolo riepilogo e la modifica dell'ordinamento delle righe e così via. Ecco alcuni esempi:

#  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())

Effetto di visualizzazione dei dati

ggplot2 è un pacchetto R per creare grafica in modo dichiarativo, in base alla grammatica della grafica. Si forniscono i dati, si spiega ggplot2 come eseguire il mapping delle variabili all'estetica, alle primitive grafiche da usare e ai dettagli. Di seguito sono riportati alcuni esempi.

# 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.

Compilazione di modelli

Il tidymodels framework è una raccolta di pacchetti per la modellazione e l'apprendimento automatico usando tidyverse i principi. Include un elenco di pacchetti principali per un'ampia gamma di attività di compilazione di modelli, ad esempio rsample per la suddivisione dei campioni di set di dati di training/test, parsnip per la specifica del modello, recipes per la pre-elaborazione dei dati, workflows per l'ottimizzazione dei flussi di lavoro di modellazione, tune per l'ottimizzazione degli iperparametri, yardstick per la valutazione del modello, broom per l'associazione degli output del modello e dials per la gestione dei parametri di ottimizzazione. Per altre informazioni sui pacchetti, visitare il sito Web tidymodels. Di seguito è riportato un esempio di compilazione di un modello di regressione lineare per stimare le miglia per gallone di un'automobile in base al suo 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.

Dal grafico a dispersione, la relazione sembra approssimativamente lineare e la varianza sembra costante. Si proverà ora a modellare questa operazione usando la regressione lineare.

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)

Applicare il modello di regressione lineare per la stima nel set di dati di test.

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

Si esaminerà ora il risultato del modello. È possibile disegnare il modello come grafico a linee e i dati di verità sul terreno di prova come punti nello stesso grafico. Il modello ha un aspetto ottimale.

# 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.