R

R 기초 36 - # 비계층적 군집분석

코딩탕탕 2022. 10. 28. 11:38

 

 

# 비계층적 군집분석
# K-Means 군집분석을 가장 많이 사용 : K(군집 수)를 얼마?

data <- read.csv("testdata/exam.csv", header = T, sep = ' ')
data

d_data <- dist(data, method = "euclidean")
d_data

# dist의 결과를 공간적 배치로 표현
gra_data <- cmdscale(d_data)
gra_data

plot(gra_data, type = 'n')
text(gra_data)

data$avg <- apply(data[, 2:5], 1, mean)

# K-Means : 데이터에 대한 정규화/표준화를 추천, k의 갯수:elbow 기법
data_s <- scale(data[2:5])
head(data_s,2)

# best 군집수 얻기
install.packages("NbClust")
library(NbClust)
nc <- NbClust(data_s, min.nc = 2, max.nc = 5, method = 'kmeans')
nc
plot(table(nc$Best.nc[1]))

# 모델 생성
kmodel <- kmeans(data[, c('bun', 'avg')], 4)
kmodel

table(kmodel$cluster)

cluster <- kmodel$cluster
cluster

df <- cbind(cluster, data[, c('bun', 'avg')])
df