使用 Tidyverse
Tidyverse 是一組 R 套件,數據科學家通常會在日常數據分析中使用。 它包含數據匯入的套件(readr
)、數據視覺效果(ggplot2
)、數據操作(dplyr
、 tidyr
)、功能性程序設計(purrr
)和模型建置(tidymodels
) 等。中的 tidyverse
套件設計成順暢地一起運作,並遵循一組一致的設計原則。
Microsoft Fabric 會使用每個運行時間版本散發 的最新穩定版本 tidyverse
。 匯入並開始使用您熟悉的 R 套件。
必要條件
取得 Microsoft Fabric 訂用 帳戶。 或者,註冊免費的 Microsoft Fabric 試用版。
登入 Microsoft Fabric。
使用首頁左側的體驗切換器,切換至 Synapse 資料科學 體驗。
開啟或建立筆記本。 若要瞭解如何,請參閱 如何使用 Microsoft Fabric 筆記本。
將語言選項設定為 SparkR (R) 以變更主要語言。
將筆記本附加至 Lakehouse。 在左側,選取 [新增 ] 以新增現有的 Lakehouse 或建立 Lakehouse。
負荷 tidyverse
# load tidyverse
library(tidyverse)
資料匯入
readr
是 R 套件,提供讀取矩形資料檔的工具,例如 CSV、TSV 和固定寬度檔案。 readr
提供快速且易記的方式來讀取矩形數據檔,例如提供函 read_csv()
式,以及 read_tsv()
分別讀取 CSV 和 TSV 檔案。
讓我們先建立 R data.frame,使用 readr::write_csv()
將它寫入 Lakehouse,並使用 將它讀回 readr::read_csv()
。
注意
若要使用 readr
存取 Lakehouse 檔案,您必須使用 檔案 API 路徑。 在 Lakehouse 總管中,以滑鼠右鍵按下您想要存取的檔案或資料夾,並從內容功能表複製其 檔案 API 路徑 。
# 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
接著,讓我們使用 檔案 API 路徑將數據寫入 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)
從 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)
數據整理
tidyr
是一種 R 套件,提供使用混亂數據的工具。 中 tidyr
的主要函式旨在協助您將數據重新塑造成一個整潔的格式。 Tidy 數據具有特定的結構,其中每個變數都是數據行,而每個觀察都是一個數據列,這可讓您更輕鬆地在 R 和其他工具中使用數據。
例如,中的 tidyr
函gather()
式可用來將寬數據轉換成長數據。 以下是範例:
# convert the stock data into longer data
library(tidyr)
stocksL <- gather(data = stocks, key = stock, value = price, X, Y, Z)
stocksL
函式程式設計
purrr
是一個 R 套件,提供一組完整的且一致的工具來處理函式和向量,藉此增強 R 的功能程式設計工具組。 最好的起點 purrr
是函式系列 map()
,可讓您以更簡潔且更容易閱讀的程式代碼取代許多 for 迴圈。 以下是使用 map()
函式套用至清單每個元素的範例:
# double the stock values using purrr
library(purrr)
stocks_double = map(stocks %>% select_if(is.numeric), ~.x*2)
stocks_double
資料操作
dplyr
是一個 R 套件,提供一組一致的動詞,可協助您解決最常見的數據操作問題,例如根據名稱選取變數、根據值挑選案例、減少多個值到單一摘要,以及變更數據列的順序等等。以下是一些範例:
# 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())
資料視覺效果
ggplot2
是以圖形文法為基礎,以宣告方式建立圖形的 R 套件。 您提供數據、說明 ggplot2
如何將變數對應至美學、要使用的圖形基本類型,以及其會處理詳細數據。 以下列出一些範例:
# draw a chart with points and lines all in one
ggplot(stocksL, aes(x=time, y=price, colour = stock)) +
geom_point()+
geom_line()
# draw a boxplot
ggplot(stocksL, aes(x=time, y=price, colour = stock)) +
geom_boxplot()
模型建置
此 tidymodels
架構是使用 tidyverse
原則建立模型和機器學習的套件集合。 它涵蓋各種模型建置工作的核心套件清單,例如rsample
定型/測試數據集範例分割、parsnip
模型規格、數據前置處理、 recipes
workflows
模型工作流程、超參數微調yardstick
、tune
模型評估、broom
潮汐模型輸出,以及dials
管理微調參數。 您可以流覽 tidymodels 網站來深入瞭解套件。 以下是建置線性回歸模型的範例,可根據汽車重量(wt):預測每加侖(mpg)的英里數:
# look at the relationship between the miles per gallon (mpg) of a car and its weight (wt)
ggplot(mtcars, aes(wt,mpg))+
geom_point()
從散佈圖,關聯性看起來大約是線性的,而變異數看起來是常數。 讓我們嘗試使用線性回歸來建立此模型。
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)
套用線性回歸模型來預測測試數據集。
# using the lm model to predict on test dataset
predictions <- predict(lm_fit, test)
predictions
讓我們看看模型結果。 我們可以將模型繪製為折線圖,並將測試地面真相數據繪製為相同圖表上的點。 模型看起來不錯。
# 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")
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應