Freigeben über


Verwenden von Tidyverse

Tidyverse ist eine Sammlung von R-Paketen, die Data Scientists häufig in alltäglichen Datenanalysen verwenden. Sie umfasst Pakete für Datenimport (readr), Datenvisualisierung (ggplot2), Datenbearbeitung (dplyr, tidyr), funktionale Programmierung (purrr) und Modellerstellung (tidymodels) usw. Die Pakete in tidyverse sind so konzipiert, dass sie nahtlos zusammenarbeiten und konsistenten Entwurfsprinzipien folgen.

Microsoft Fabric verteilt die neueste stabile Version von tidyverse mit jedem Runtime-Release. Importieren Sie Ihre vertrauten R-Pakete, und beginnen Sie mit der Verwendung.

Voraussetzungen

  • Öffnen oder erstellen Sie ein Notebook. Informationen dazu finden Sie unter Verwenden von Microsoft Fabric-Notebooks.

  • Legen Sie zum Ändern der primären Sprache die Sprachoption auf SparkR (R) fest.

  • Fügen Sie Ihr Notebook an ein Lakehouse an. Wählen Sie auf der linken Seite Hinzufügen aus, um ein vorhandenes Lakehouse hinzuzufügen oder ein Lakehouse zu erstellen.

Laden von tidyverse

# load tidyverse
library(tidyverse)

Datenimport

readr ist ein R-Paket, das Tools zum Lesen rechteckiger Datendateien wie CSV-, TSV-Dateien und Dateien mit fester Breite bereitstellt. readr bietet eine schnelle und benutzerfreundliche Möglichkeit zum Lesen rechteckiger Datendateien, z. B. Bereitstellung von read_csv()- und read_tsv()-Funktionen zum Lesen von CSV- bzw. TSV-Dateien.

Erstellen wir zunächst einen R-Datenrahmen (data.frame), schreiben Sie ihn mithilfe von readr::write_csv() in ein Lakehouse, und lesen sie ihn mit readr::read_csv() ein.

Hinweis

Um mithilfe von readr auf Lakehouse-Dateien zuzugreifen, müssen Sie den Datei-API-Pfad verwenden. Klicken Sie im Lakehouse-Explorer mit der rechten Maustaste auf die Datei oder den Ordner, auf die bzw. den Sie zugreifen möchten, und kopieren Sie den Datei-API-Pfad aus dem Kontextmenü.

# 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

Anschließend schreiben wir die Daten mithilfe des Datei-API-Pfads in ein Lakehouse.

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

Lesen Sie die Daten aus dem 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)

Datenbereinigung

tidyr ist ein R-Paket, das Tools zum Arbeiten mit unordentlichen Daten bereitstellt. Die Hauptfunktionen in tidyr sollen Ihnen helfen, Daten in ein übersichtliches Format umzustrukturieren. Übersichtliche Daten verfügen über eine bestimmte Struktur, wobei jede Variable eine Spalte und jede Beobachtung eine Zeile ist, was das Arbeiten mit Daten in R und anderen Tools erleichtert.

Beispielsweise kann die gather()-Funktion in tidyr verwendet werden, um breite Daten in lange Daten zu konvertieren. Hier sehen Sie ein Beispiel:

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

Funktionale Programmierung

purrr ist ein R-Paket, das das Toolkit für die funktionale Programmierung von R verbessert, indem es einen vollständigen und konsistenten Satz von Tools zum Arbeiten mit Funktionen und Vektoren bereitstellt. Der beste Ausgangspunkt von purrr ist die Familie von map()-Funktionen, mit denen Sie viele for-Schleifen durch Code ersetzen können, der sowohl prägnant als auch einfacher zu lesen ist. Hier sehen Sie ein Beispiel für die Verwendung von map(), um eine Funktion auf jedes Element einer Liste anzuwenden:

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

Datenmanipulation

dplyr ist ein R-Paket, das einen konsistenten Satz von Verben bereitstellt, die Ihnen helfen, die häufigsten Probleme bei der Datenbearbeitung zu lösen, z. B. das Auswählen von Variablen basierend auf den Namen, das Auswählen von Fällen basierend auf den Werten, das Reduzieren mehrerer Werte auf eine einzelne Zusammenfassung und das Ändern der Reihenfolge der Zeilen usw. Im Folgenden finden Sie einige Beispiele:

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

Datenvisualisierung

ggplot2 ist ein R-Paket zum deklarativen Erstellen von Grafiken, basierend auf dem Buch „The Grammar of Graphics“. Sie stellen die Daten bereit, geben ggplot2 an, wie Variablen der Ästhetik zugeordnet werden, welche grafischen Grundtypen verwendet werden sollen, und es kümmert sich um die Details. Hier sehen Sie einige Beispiele:

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

Modellerstellung

Das tidymodels-Framework ist eine Sammlung von Paketen für die Modellierung und maschinelles Lernen mithilfe von tidyverse-Prinzipien. Es enthält eine Liste der Kernpakete für eine Vielzahl von Modellerstellungsaufgaben, z. B. rsample für die Beispielaufteilung von Trainings-/Testdatasets, parsnip für die Modellspezifikation, recipes für die Vorverarbeitung von Daten, workflows für Modellierungsworkflows, tune für die Optimierung von Hyperparametern, yardstick für die Modellauswertung, broom für das Bereinigen von Modellausgaben und dials für die Verwaltung von Optimierungsparametern. Weitere Informationen zu den Paketen finden Sie auf der Tidymodels-Website. Hier finden Sie ein Beispiel für die Erstellung eines linearen Regressionsmodells, um die Meilen pro Gallone (mpg) eines Autos basierend auf seinem Gewicht (wt) vorherzusagen:

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

Auf dem Streudiagramm sieht die Beziehung annähernd linear aus, und die Varianz ist konstant. Versuchen wir, dies mithilfe einer linearen Regression zu modellieren.

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)

Wenden Sie das lineare Regressionsmodell an, um das Testdataset vorherzusagen.

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

Sehen wir uns das Modellergebnis an. Wir können das Modell als Liniendiagramm und die Ground-Truth-Testdaten als Punkte im selben Diagramm zeichnen. Das Modell sieht gut aus.

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