Tidyverse 사용

Tidyverse 는 데이터 과학자가 일상적인 데이터 분석에서 일반적으로 사용하는 R 패키지의 컬렉션입니다. 여기에는 데이터 가져오기(), 데이터 시각화(readr), 데이터 조작(ggplot2, tidyr), 기능 프로그래밍(dplyrpurrr) 및 모델 빌드() 등의 패키지가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()읽어 보겠습니다.

참고

를 사용하여 readrLakehouse 파일에 액세스하려면 파일 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 및 기타 도구에서 데이터를 더 쉽게 사용할 수 있습니다.

예를 들어 의 함수 tidyrgather() 사용하여 와이드 데이터를 긴 데이터로 변환할 수 있습니다. 예를 들면 다음과 같습니다.

# 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, yardsticktune 모델 출력 정리 및 튜닝 매개 변수 관리와 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()

mpg 및 wt의 그래프입니다.

산점도에서 관계는 대략 선형으로 표시되고 분산은 상수로 보입니다. 선형 회귀를 사용하여 이를 모델링해 보겠습니다.

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

모델 결과의 그래프입니다.

다음 단계