Share via


Tidyverse gebruiken

Tidyverse is een verzameling R-pakketten die gegevenswetenschappers vaak gebruiken in dagelijkse gegevensanalyses. Het bevat pakketten voor het importeren van gegevens (readr), gegevensvisualisatie (ggplot2), gegevensmanipulatie (dplyr, tidyrfunctionele programmering (purrr) en modelbouw (tidymodels) enzovoort. De pakketten in tidyverse zijn ontworpen om naadloos samen te werken en een consistente set ontwerpprincipes te volgen.

Microsoft Fabric distribueert de nieuwste stabiele versie van tidyverse elke runtimerelease. Importeer en gebruik uw vertrouwde R-pakketten.

Vereisten

  • Open of maak een notitieblok. Zie Microsoft Fabric-notebooks gebruiken voor meer informatie.

  • Stel de taaloptie in op SparkR (R) om de primaire taal te wijzigen.

  • Koppel uw notitieblok aan een lakehouse. Selecteer aan de linkerkant Toevoegen om een bestaand lakehouse toe te voegen of om een lakehouse te maken.

Lading tidyverse

# load tidyverse
library(tidyverse)

Gegevensimport

readr is een R-pakket dat hulpprogramma's biedt voor het lezen van rechthoekige gegevensbestanden, zoals CSV-, TSV- en bestanden met vaste breedte. readr biedt een snelle en beschrijvende manier om rechthoekige gegevensbestanden te lezen, zoals functies read_csv() en read_tsv() voor het lezen van CSV- en TSV-bestanden.

Laten we eerst een R data.frame maken, schrijven naar Lakehouse met behulp readr::write_csv() van en teruglezen met readr::read_csv().

Notitie

Als u toegang wilt krijgen tot Lakehouse-bestanden met behulp van readr, moet u het pad bestands-API gebruiken. Klik in Lakehouse Explorer met de rechtermuisknop op het bestand of de map die u wilt openen en kopieer het bestands-API-pad in het contextmenu.

# 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

Vervolgens gaan we de gegevens naar Lakehouse schrijven met behulp van het bestands-API-pad.

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

Lees de gegevens uit 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)

Gegevens opsnijden

tidyr is een R-pakket dat hulpprogramma's biedt voor het werken met rommelige gegevens. De belangrijkste functies in tidyr zijn ontworpen om u te helpen bij het hervormen van gegevens in een overzichtelijke indeling. Nette gegevens hebben een specifieke structuur waarbij elke variabele een kolom is en elke observatie een rij is, waardoor het gemakkelijker is om met gegevens in R en andere hulpprogramma's te werken.

De gather() functie in tidyr kan bijvoorbeeld worden gebruikt om brede gegevens te converteren naar lange gegevens. Hier volgt een voorbeeld:

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

Functioneel programmeren

purrr is een R-pakket dat de functionele programmeertoolkit van R verbetert door een volledige en consistente set hulpprogramma's te bieden voor het werken met functies en vectoren. De beste plek om mee te beginnen purrr is de familie van map() functies waarmee u veel voor lussen kunt vervangen door code die zowel beknopter als gemakkelijker te lezen is. Hier volgt een voorbeeld van het toepassen map() van een functie op elk element van een lijst:

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

Gegevensmanipulatie

dplyr is een R-pakket dat een consistente set werkwoorden biedt waarmee u de meest voorkomende problemen met gegevensmanipulatie kunt oplossen, zoals het selecteren van variabelen op basis van de namen, het kiezen van cases op basis van de waarden, het verminderen van meerdere waarden tot één samenvatting en het wijzigen van de volgorde van de rijen, enzovoort. Hier volgen enkele voorbeelden:

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

Gegevensvisualisatie

ggplot2 is een R-pakket voor het declaratief maken van afbeeldingen op basis van The Grammar of Graphics. U geeft de gegevens op, laat zien ggplot2 hoe u variabelen toe te wijzen aan esthetisch, welke grafische primitieven u moet gebruiken en hoe de details worden afgehandeld. Hieronder volgen een aantal voorbeelden:

# draw a chart with points and lines all in one

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

Grafiek van tekenlijn.

# draw a boxplot

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

Grafiek van plotvak.

Modelbouw

Het tidymodels framework is een verzameling pakketten voor modellering en machine learning met behulp van tidyverse principes. Hierin wordt een lijst met kernpakketten behandeld voor een groot aantal modelbouwtaken, zoals rsample voor het splitsen parsnip van modelgegevenssets, voor modelspecificatie, recipes voor het vooraf verwerken van gegevens, workflows voor modelleringswerkstromen, tune voor het afstemmen van hyperparameters, yardstick voor modelevaluatie, broom voor het opsnijpen van modeluitvoer en dials voor het beheren van afstemmingsparameters. Meer informatie over de pakketten vindt u op de website van tidymodels. Hier volgt een voorbeeld van het bouwen van een lineair regressiemodel om de mijlen per gallon (mpg) van een auto te voorspellen op basis van het gewicht (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()

Grafiek van mpg en wt.

Vanuit het spreidingsdiagram ziet de relatie er ongeveer lineair uit en ziet de variantie er constant uit. Laten we dit modelleren met behulp van lineaire regressie.

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)

Pas het lineaire regressiemodel toe om te voorspellen op testgegevensset.

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

Laten we eens kijken naar het modelresultaat. We kunnen het model tekenen als een lijndiagram en de testgegevens voor waarheid als punten in hetzelfde diagram. Het model ziet er goed uit.

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

Grafiek van modelresultaat.