Tidyverse 사용
Tidyverse 는 데이터 과학자가 일상적인 데이터 분석에서 일반적으로 사용하는 R 패키지의 컬렉션입니다. 여기에는 데이터 가져오기(), 데이터 시각화(readr
), 데이터 조작(ggplot2
, tidyr
), 기능 프로그래밍(dplyr
purrr
) 및 모델 빌드() 등의 패키지가tidymodels
포함됩니다. 의 tidyverse
패키지는 원활하게 함께 작동하고 일관된 디자인 원칙 집합을 따르도록 설계되었습니다.
중요
Microsoft Fabric은 미리 보기로 제공됩니다.
Microsoft Fabric은 모든 런타임 릴리스와 함께 안정적인 최신 버전을 tidyverse
배포합니다. 익숙한 R 패키지를 가져오고 사용하기 시작합니다.
사전 요구 사항
Power BI Premium 구독입니다. 없는 경우 Power BI Premium 구매 방법을 참조하세요.
프리미엄 용량이 할당된 Power BI 작업 영역. 작업 영역이 없는 경우 작업 영역 만들기 의 단계를 사용하여 작업 영역을 만들고 프리미엄 용량에 할당합니다.
Microsoft Fabric에 로그인합니다.
Notebook을 열거나 만듭니다. 방법을 알아보려면 Microsoft Fabric Notebook을 사용하는 방법을 참조하세요.
언어 옵션을SparkR(R)로 설정하여 기본 언어를 변경합니다.
레이크하우스에 전자 필기장을 첨부합니다. 왼쪽에서 추가 를 선택하여 기존 레이크하우스를 추가하거나 레이크하우스를 만듭니다.
로드 tidyverse
# load tidyverse
library(tidyverse)
데이터 가져오기
readr
는 CSV, TSV 및 고정 너비 파일과 같은 사각형 데이터 파일을 읽는 도구를 제공하는 R 패키지입니다. readr
에서는 함수 read_csv()
를 제공하고 CSV 및 read_tsv()
TSV 파일을 각각 읽는 것과 같은 직사각형 데이터 파일을 빠르고 친숙한 방법으로 읽을 수 있습니다.
먼저 R data.frame을 만들고 를 사용하여 lakehouse에 쓰고 를 사용하여 readr::write_csv()
다시 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 경로를 사용하여 레이크하우스에 데이터를 쓰겠습니다.
# write data to lakehouse using the File API path
temp_csv_api <- "/lakehouse/default/Files/stocks.csv"
readr::write_csv(stocks,temp_csv_api)
레이크하우스에서 데이터를 읽습니다.
# 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
는 데이터를 깔끔한 형식으로 재구성하는 데 도움이 되도록 설계되었습니다. 깔끔한 데이터에는 각 변수가 열이고 각 관찰이 행인 특정 구조가 있으므로 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()
입니다. 다음은 를 사용하여 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
모델링 및 기계 학습을 위한 패키지 컬렉션입니다. 학습/테스트 데이터 세트 샘플 분할, 모델 사양, 데이터 전처리, parsnip
모델링 워크플로, recipes
하이퍼 매개 변수 튜닝, workflows
모델 평가broom
, yardstick
tune
모델 출력 정리 및 튜닝 매개 변수 관리와 dials
같은 rsample
다양한 모델 빌드 작업에 대한 핵심 패키지 목록을 다룹니다. 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")