Använda Tidyverse

Tidyverse är en samling R-paket som dataexperter ofta använder i dagliga dataanalyser. Den innehåller paket för dataimport (readr), datavisualisering (ggplot2), datamanipulering (dplyr, tidyr), funktionell programmering (purrr) och modellskapande (tidymodels) osv. Paketen i tidyverse är utformade för att fungera sömlöst tillsammans och följa en konsekvent uppsättning designprinciper.

Viktigt

Microsoft Fabric är en förhandsversion.

Microsoft Fabric distribuerar den senaste stabila versionen av tidyverse med varje körningsversion. Importera och börja använda dina välbekanta R-paket.

Förutsättningar

  • Öppna eller skapa en notebook-fil. Mer information finns i Så här använder du Microsoft Fabric-notebook-filer.

  • Ändra det primära språket genom att ange språkalternativet till SparkR (R).

  • Bifoga anteckningsboken i ett sjöhus. Till vänster väljer du Lägg till för att lägga till ett befintligt sjöhus eller skapa ett sjöhus.

Ladda tidyverse

# load tidyverse
library(tidyverse)

Dataimport

readr är ett R-paket som innehåller verktyg för att läsa rektangulära datafiler som CSV-, TSV- och filer med fast bredd. readr ger ett snabbt och användarvänligt sätt att läsa rektangulära datafiler som att tillhandahålla funktioner read_csv() och read_tsv() för att läsa CSV- respektive TSV-filer.

Först skapar vi en R-data.frame, skriver den till Lakehouse med hjälp av readr::write_csv() och läser tillbaka den med readr::read_csv().

Anteckning

Om du vill komma åt Lakehouse-filer med hjälp av readrmåste du använda sökvägen till fil-API:et. I Lakehouse Explorer högerklickar du på den fil eller mapp som du vill komma åt och kopierar sökvägen till fil-API :et från snabbmenyn.

# 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

Nu ska vi skriva data till Lakehouse med hjälp av sökvägen till fil-API:et.

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

Läs data från 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)

Datasnakning

tidyr är ett R-paket som innehåller verktyg för att arbeta med röriga data. Huvudfunktionerna i tidyr är utformade för att hjälpa dig att omforma data till ett snyggt format. Prydliga data har en specifik struktur där varje variabel är en kolumn och varje observation är en rad, vilket gör det enklare att arbeta med data i R och andra verktyg.

Funktionen i tidyr kan till exempel gather() användas för att konvertera breda data till långa data. Här är ett exempel:

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

Funktionell programmering

purrr är ett R-paket som förbättrar R:s funktionella programmeringsverktyg genom att tillhandahålla en komplett och konsekvent uppsättning verktyg för att arbeta med funktioner och vektorer. Det bästa stället att börja med är serien map() med purrr funktioner som gör att du kan ersätta många för loopar med kod som är både mer kortfattad och lättare att läsa. Här är ett exempel på hur du använder map() för att tillämpa en funktion på varje element i en lista:

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

Datamanipulering

dplyr är ett R-paket som ger en konsekvent uppsättning verb som hjälper dig att lösa de vanligaste datamanipuleringsproblemen, till exempel att välja variabler baserat på namn, välja ärenden baserat på värdena, minska flera värden till en enda sammanfattning och ändra ordningen på raderna osv. Här följer några exempel:

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

Datavisualisering

ggplot2 är ett R-paket för att deklarativt skapa grafik, baserat på grafikens grammatik. Du anger data, berättar ggplot2 hur du mappar variabler till estetik, vilka grafiska primitiver som ska användas och den tar hand om detaljerna. Här är några exempel:

# draw a chart with points and lines all in one

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

Diagram över ritningslinje.

# draw a boxplot

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

Diagram över ritningsruta.

Modellbyggnad

Ramverket tidymodels är en samling paket för modellering och maskininlärning med hjälp av tidyverse principer. Den omfattar en lista över kärnpaket för en mängd olika uppgifter för modellskapande, till exempel rsample för att dela upp tränings-/testdatauppsättningsexempel, parsnip för modellspecifikation, recipes för förbearbetning av data, workflows för modellering av arbetsflöden, tune för justering av hyperparametrar, yardstick för modellutvärdering, broom för att städa modellutdata och dials för att hantera justeringsparametrar. Du kan lära dig mer om paketen genom att besöka tidymodels webbplats. Här är ett exempel på hur du skapar en linjär regressionsmodell för att förutsäga miles per gallon (mpg) för en bil baserat på dess vikt (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()

Diagram över mpg och wt.

Från punktdiagrammet ser relationen ungefär linjär ut och variansen ser konstant ut. Nu ska vi försöka modellera detta med linjär regression.

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)

Använd den linjära regressionsmodellen för att förutsäga på testdatauppsättningen.

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

Låt oss ta en titt på modellresultatet. Vi kan rita modellen som ett linjediagram och testa sanningsdata som punkter i samma diagram. Modellen ser bra ut.

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

Diagram över modellresultatet.

Nästa steg