Použití Tidyverse

Tidyverse je kolekce balíčků R, které datoví vědci běžně používají při každodenních analýzách dat. Zahrnuje balíčky pro import dat (), vizualizaci dat (ggplot2readr), manipulaci s daty (dplyr, tidyr), funkční programování (purrr) a vytváření modelů (tidymodels) atd. Balíčky jsou tidyverse navržené tak, aby hladce spolupracovaly a dodržovaly konzistentní sadu principů návrhu.

Microsoft Fabric distribuuje nejnovější stabilní verzi tidyverse s každou verzí modulu runtime. Importujte a začněte používat známé balíčky R.

Požadavky

  • Otevřete nebo vytvořte poznámkový blok. Postup najdete v tématu Použití poznámkových bloků Microsoft Fabric.

  • Nastavte možnost jazyka na SparkR (R) a změňte primární jazyk.

  • Připojte poznámkový blok k jezeru. Na levé straně vyberte Přidat, pokud chcete přidat existující jezerní dům nebo vytvořit jezero.

Načíst tidyverse

# load tidyverse
library(tidyverse)

Import dat

readr je balíček R, který poskytuje nástroje pro čtení obdélníkových datových souborů, jako jsou CSV, TSV a soubory s pevnou šířkou. readr poskytuje rychlý a přátelský způsob čtení obdélníkových datových souborů, jako je poskytování funkcí read_csv() a read_tsv() čtení souborů CSV a TSV v uvedeném pořadí.

Nejprve vytvoříme R data.frame, zapíšeme ho do lakehouse pomocí readr::write_csv() a znovu ho načteme readr::read_csv().

Poznámka:

Pokud chcete získat přístup k souborům Lakehouse pomocí readr, musíte použít cestu k rozhraní File API. V Průzkumníku Lakehouse klikněte pravým tlačítkem na soubor nebo složku, ke které chcete získat přístup, a zkopírujte jeho cestu k rozhraní File API z místní nabídky.

# 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

Pak zapíšeme data do lakehouse pomocí cesty k rozhraní File API.

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

Čtení dat z 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)

Uklidnění dat

tidyr je balíček R, který poskytuje nástroje pro práci s neuspořádanými daty. Hlavní funkce tidyr jsou navržené tak, aby vám pomohly přetváření dat do přehledného formátu. Data Tidy mají specifickou strukturu, kde každá proměnná je sloupec a každé pozorování je řádek, který usnadňuje práci s daty v R a dalších nástrojích.

Například funkci in tidyr lze použít k převodu gather() širokých dat na dlouhá data. Tady je příklad:

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

Funkční programování

purrr je balíček R, který vylepšuje sadu nástrojů pro funkční programování jazyka R tím, že poskytuje kompletní a konzistentní sadu nástrojů pro práci s funkcemi a vektory. Nejlepším místem purrr , kde začít, je řada map() funkcí, které umožňují nahradit mnoho smyček kódem, který je stručnější a čitelnější. Tady je příklad použití map() funkce pro každý prvek seznamu:

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

Manipulace s daty

dplyr je balíček R, který poskytuje konzistentní sadu příkazů, které vám pomůžou vyřešit nejběžnější problémy s manipulací s daty, jako je výběr proměnných na základě názvů, výběr případů na základě hodnot, snížení počtu hodnot na jeden souhrn a změna pořadí řádků atd. Tady je několik příkladů:

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

Vizualizace dat

ggplot2 je balíček jazyka R pro deklarativní vytváření grafiky na základě gramatiky grafiky. Zadáte data, řeknete ggplot2 , jak mapovat proměnné na estetickou architekturu, jaká grafická primitiva se mají použít, a postará se o podrobnosti. Několik příkladů:

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

Vytváření modelů

Architektura tidymodels je kolekce balíčků pro modelování a strojové učení pomocí tidyverse principů. Tento článek obsahuje seznam základních balíčků pro širokou škálu úloh vytváření modelů, jako rsample je rozdělení ukázky trénovací/testovací datové sady, parsnip specifikace modelu, recipes pro předběžné zpracování dat, workflows pro modelování pracovních postupů, tune pro ladění hyperparametrů, yardstick pro vyhodnocení modelu, broom pro vázané výstupy modelu a dials pro správu parametrů ladění. Další informace o balíčcích najdete na webu tidymodels. Tady je příklad vytvoření modelu lineární regrese pro předpověď mil na gallon (mpg) auta na základě jeho hmotnosti (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.

Z bodového grafu vypadá relace přibližně lineární a rozptyl vypadá konstantně. Zkusme to modelovat pomocí lineární regrese.

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)

Použití modelu lineární regrese k predikci testovací datové sady

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

Pojďme se podívat na výsledek modelu. Model můžeme nakreslit jako spojnicový graf a testovací data základní pravdy jako body ve stejném grafu. Model vypadá dobře.

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