#========[연관성분석과 군집화]========
#
# Descriptive 분석들은 대부분 탐색적인 목적이 강하기 때
문에
# 그 자체로는 옳고 그름을 논할 수 없음
#================
# 장바구니분석 = 연관성분석 = Association Analysis =
Market Basket Analysis
# = Association Rule Mining (Discovery)
k05 <- read.transactions("actorlist.txt",
rm.duplicates=T, format="basket", sep="," );
# 텍스트 파일에서 확인 후 CSV로 저장. 엑셀에서 다시 CSV
로 재저장 실행 후 텍스트 파일에서 불필요한 문자 확인 필
요 (k05 !! )
# unnecessary space should be elimnated
inspect(head(k05, 5))
# Create an item frequency plot for the top 10 items
itemFrequencyPlot(k05, topN=10,type="absolute")
rules <- apriori(k05, parameter = list(supp = 0.1, conf
= 0.3, minlen=2, maxlen=2))
inspect(rules)
summary(rules)
#=============
iris1 <- iris[, 1:4]
iris2 <- scale(iris1)
fit <- kmeans(iris2, 3)
tmp01<-as.data.frame(fit$centers)
d <- dist(scale(jara03), method = "euclidean") #
distance matrix
fit1 <- hclust(d, method="ward.D")
plot(fit1, labels=jara$artist) # display dendogram
#-------------------
# 클러스터링 (군집화)에 사용할 항목만 뽑아서 df 생성
mtc1 <- mtcars[, c(1,4,6) ]
# 스케일을 통일
mtc2 <- scale(mtc1)
# 비계층적 군집화 방법인 k-means 를 적용. 4개 군집으로
실행
fit <- kmeans(mtc2, 4)
# 생성된 결과를 담고있는 fit (모델) 에서 각 군집의 중심
점 정보를
# 추출해서 DF로 저장 --- 왜? 마음대로 그래프 그려보고
싶어서
tmp01<-as.data.frame(fit$centers)
#-------- 계층적 군집화도 가능
d <- dist(scale(mtc1), method = "euclidean") # distance
matrix
fit1 <- hclust(d, method="ward.D")
plot(fit1, labels=row.names(mtcars) ) # display
dendogram
rect.hclust(fit1, 3)
#==========
# 아래 내용이 들어 있는 샘플 데이터
bs1 <- read.csv("basket_sample.txt")
ID,Product
A,Prod1
A,Prod2
B,Prod1
B,Prod2
B,Prod3
C,Prod1
> head(bs1)
ID Product
1 A Prod1
2 A Prod2
3 B Prod1
4 B Prod2
5 B Prod3
6 C Prod1
# splitstackshape 패키지를 설치하기 위해
# 연관 패키지 함께 설치
install.packages("splitstackshape")
install.packages("stringi")
install.packages("data.table")
require(data.table)
library(splitstackshape)
mydf <- bs1
> reshape(getanID(mydf, "ID"), direction = "wide", idvar = "ID", timevar = ".id")
ID Product.1 Product.2 Product.3
1: A Prod1 Prod2 NA
2: B Prod1 Prod2 Prod3
3: C Prod1 NA NA
> dcast.data.table(getanID(mydf, "ID"), ID ~ .id, value.var = "Product", fill = "")
ID 1 2 3
1: A Prod1 Prod2
2: B Prod1 Prod2 Prod3
3: C Prod1
# data.table을 사용하고 있음에 주의. read.transaction으로 포맷변경
'R 데이터 분석' 카테고리의 다른 글
0720 클러스터링 군집화 연습 (0) | 2015.07.20 |
---|---|
경기대빅파이 5주 계획 6주 계획 (0) | 2015.07.20 |
0713 백업 (0) | 2015.07.13 |
실거래가 분석 (0) | 2015.07.13 |
[retail example ] R :: Tree, R, Scoring, cumulative gains chart plotting , AIC oversampling, (0) | 2015.07.11 |