Forbes 기사에 따르면, 데이터 정제 및 정리는 가장 시간이 많이 걸리고 재미없는 데이터 과학 작업이라고 합니다. DataExplorer 패키지를 이용하면 전체 리소스의 80% 까지 최소화할 수 있습니다. 이와 더불어, 사용자에게 매우 친숙한 디자인이과 대부분의 경우 하나의 함수 호출만으로 데이터 탐색을 즐길 수 있습니다!

 

데이터 조작은 data.table에 의해 제공되므로 대용량 데이터 세트를 포함하는 작업은 대개 몇 초 내에 완료됩니다. 또한 이 패키지는 입력 데이터 클래스로 융통성이 높아 어떤 data.frame과 같은 객체를 포함 할 수 있습니다. 그러나 특정 함수는 update-by-reference 특징으로 인해 data.table 클래스 객체를 입력으로 요구합니다.

이제 몇 가지 코드를 살펴 볼까요?


mlbench 라이브러리에서BostonHousing 데이터 세트를 가져옵니다.

library(mlbench)
data("BostonHousing", package = "mlbench")

초기 시각화

데이터에 대해 잘 알지 못해도 처음 세 가지 작업은 거의 항상 다음과 같습니다.

library(DataExplorer)
plot_missing(BostonHousing) ## 누락 된 값이 있습니까? 누락 된 데이터 프로필은 무엇입니까?
plot_bar(BostonHousing) ## 각 이산 변수의 범주별 빈도는 어떻게 생겼습니까?
plot_histogram(BostonHousing) ## 각 연속 변수의 분포는 어떻습니까?

흥미로운 통찰력은별로 없지만, plot_missing,plot_bar 및 plot_histogram 결과는 아래와 같습니다.

 

Histogram

면밀히 조사하자면, 변수 rad는 이산적인 것처럼 보입니다. crim, zn, indusbinto bin도 그룹화하려고 합니다.

## 인자로`rad`를 설정하십시오.
BostonHousing$rad <- as.factor(BostonHousing$rad)

## 새 이산 변수 만들기
for (col in c("crim", "zn", "indus", "b")) 
  BostonHousing[[paste0(col, "_d")]] <- as.factor(ggplot2::cut_interval(BostonHousing[[col]], 2))

## 모든 이산 변수에 대한 플롯 바 차트
plot_bar(BostonHousing)

Bar

이 시점에서 우리는 데이터 배포에 대해 훨씬 더 잘 이해하고 있습니다. 이제 medv (1000 달러짜리 주택 소유 주택의 중간값)에 관심이 있고 그것을 예측할 모델을 만들고 싶다고 가정 해보십시오. 다른 모든 변수와 비교해 봅시다.

plot_boxplot(BostonHousing, by = "medv")    

Boxplot

plot_scatterplot(
  subset(BostonHousing, select = -c(crim, zn, indus, b)), 
  by = "medv", size = 0.5)

Scatterplot_1
Scatterplot_2

plot_correlation(BostonHousing)

Correlation

이것은 데이터를 3 행의 코드만으로 상관 관계를 분석하는 방법입니다.

기능 공학

기능 공학은 더 나은 모델을 구축하는 데 중요한 단계입니다. DataExplorer는 프로세스를 쉽게 수행 할 수있는 두 가지 기능을 제공합니다. 모두 번개처럼 빠르기 때문에 입력 객체로data.table이 필요합니다. 그러나 data.table 구문으로 코딩하려는 느낌이 들지 않으면 다음 프로세스를 채택 할 수 있습니다.

## 먼저 데이터를`data.table`으로 설정하십시오.
your_data <- data.table(your_data)

## DataExplorer 기능 적용
group_category(your_data, ...)
drop_columns(your_data, ...)
set_missing(your_data, ...)

## 데이터를 다시 원래 객체로 설정
class(your_data) <- "original_object_name"

BostonHousing 데이터 세트로 돌아 갑시다. 이 섹션의 나머지 부분에서는 데이터가 이미data.table로 변환되었다고 가정합니다.

library(data.table)
BostonHousingDT <- data.table(BostonHousing)

그 변화된 연속 변수를 기억 하나요? 그 변수들을 제거해 보시죠.

drop_columns(BostonHousingDT, c("crim", "zn", "indus", "b"))

 

 

참고 :data.table은 참조로 업데이트되므로 반환 된 객체를 다시 할당 할 필요없이 원본 객체가 업데이트됩니다.

이산 변수 rad를 살펴 보겠습니다.

 

plot_bar(BostonHousingDT$rad)

Rad_bar

4, 5, 24 이외의 범주가 너무 희박하고 이 모델에 적합하지 않을 수도 있다고 생각합니다. 카테고리를 어떻게 그룹화 할 수 있습니까?

group_category(BostonHousingDT, "rad", 0.25, update = FALSE)

#    rad cnt       pct   cum_pct
# 1:  24 132 0.2608696 0.2608696
# 2:   5 115 0.2272727 0.4881423
# 3:   4 110 0.2173913 0.7055336

rad의 하단 25 %로 그룹화 한 것처럼 보이는 것은 우리가 필요한 것을 줄 것입니다.

group_category(BostonHousingDT, "rad", 0.25, update = TRUE)
plot_bar(BostonHousingDT$rad)

Grouped_rad_bar

 

범주 별 빈도 이외에 다른 변수의 합계로 그룹화하기 위해 measure 인수를 사용할 수도 있습니다. 더 많은 예제 사용 사례는?group_category를 참조하십시오.

데이터 보고서

데이터 보고서를 생성하려면 다음을 수행하십시오.

create_report(BostonHousing)

 

소스: DataExplorer: Fast Data Exploration With Minimum Code (Revolutions)