본문 바로가기
Data Science/R

[R] 연관성 분석을 위한 데이터 전처리

by AI_Wooah 2022. 3. 1.

https://polar-comet-18d.notion.site/R-31c70bf91c1c4b53ab262b58fe4a1fa1

 

[R] 연관성 분석을 위한 데이터 전처리

데이터의 구조

polar-comet-18d.notion.site

데이터의 구조

str(travel)

'data.frame': 78 obs. of 3 variables: $ cust_id : int 1 1 1 1 1 1 1 2 2 2 ... $ destination: Factor w/ 14 levels "뉴욕","런던",..: 10 11 13 7 8 2 4 10 11 13 ... $ date : Factor w/ 19 levels "1/1/16","1/10/16",..: 6 13 14 15 16 17 18 6 13 14 ...

head(travel)

cust_id destination date 1 1 오사카 1/2/16 2 1 오키나와 2/24/16 3 1 파리 3/1/16 4 1 베이징 4/10/16 5 1 상해 5/19/16 6 1 런던 6/10/16

전체 구문 수행

travel

데이터를 원하는 만큼 수를 제한해 가져오는 방법

travel[1:20,]

통합 함수를 이용해 데이터의 중복을 제거하고 겹치지 않는 데이터만 모아서 가져옴

aggregate(. ~ destination, data=travel, sum)

destination cust_id date 1 뉴욕 12 41 2 런던 26 32 3 로마 17 28 4 몰디브 22 91 5 방콕 78 77 6 베를린 53 56 7 베이징 65 64 8 상해 110 124 9 시드니 64 55 10 오사카 99 122 11 오키나와 42 97 12 이스탄불 26 43 13 파리 6 42 14 파타야 62 90

library(arules) travel3<-as(travel2, "transactions") travel3

# 데이터의 구조
str(travel)
head(travel)

travel
travel[1:20,]

# 통합 함수를 이용해 데이터의 중복을 제거하고 겹치지 않는 데이터만 모아서 가져옴
aggregate(. ~ destination, data=travel, sum)

# 연관성 분석에 필요한 변수만 추출
travel1<-travel[, c("cust_id", "destination")]
travel1

# 고객 아이디별로 방문한 도시를 묶어서 객체로 저장
travel2<-split(travel$destination, travel1$cust_id)
travel2

install.packages("<https://cran.r-project.org/src/contrib/Archive/arules/arules_1.7-2.tar.gz>", repos = NULL, type="source")

library(arules)
travel3<-as(travel2, "transactions")
travel3

as(travel1, "data.frame")

table(travel1)
# costomer_rfm의 구조
str(customer_rfm)

# 상단값
head(customer_rfm)

# 평균 구매금액
aggregate(monetary ~ monetary_level, data=customer_rfm, mean)
aggregate(frequency ~ frequency_level, data=customer_rfm, mean)
aggregate(recency ~ recency_level, data=customer_rfm, mean)

#RFM 레벨변수가 잘 생성된 것을 검증 완료

#rfm 레벨 기준으로 고객의 집단을 분류하는 세분화
rfm_level<-aggregate(. ~ monetary_level+frequency_level+recency_level, data=customer_rfm, mean)
rfm_level

# rgl 패키지 불러오기

remove.packages("rgl")
install.packages("rgl") 
ls("package:rgl")
packageVersion("rgl")
library(rgl)

# 3d plot을 통한 RFM 지수 시각화
plot3d(customer_rfm$monetary, customer_rfm$frequency, customer_rfm$recency,
       xlab = 'Monetray', ylab = 'Frequency', zlab = 'Recency', col="blue", size=6)
반응형

댓글