저번 "군집분석1" 포스팅에서는 계층적분석에대해 다뤄 보았습니다.
이번 포스팅에서는 비계층분석에 대해 알아보겠습니다.
비계층분석으로는 우리가 알고있는 K-means군집 방법이 있습니다.
K-means군집 방식은 최초에 군집수(K)를 설정해주고 그 군집에 따라서 유사한 K개의 군집으로 분류하는것 입니다.
K-means군집 방식의 경우 장점은 빠르게 군집을 완성할수있습니다. 하지만 최초의 군집수를 잘 설정하지 못하면 결과가 좋지못하기 때문에 많은 경험과 노하우가 필요합니다.
이제 R를 이용하여 직접 K-means 군집분석을 실시해 보겠습니다.
getwd()
setwd('/Users/sik/Desktop/')
wine <- read.csv("wine.csv")
wine
install.packages('NbClust')
library(NbClust)
head(wine)
df <- scale(wine[-1])
wssplot <- function(data, nc=15, seed=1234){
wss <- (nrow(data)-1)*sum(apply(data,2,var))
for (i in 2:nc){
set.seed(seed)
wss[i] <- sum(kmeans(data, centers=i)$withinss)}
plot(1:nc, wss, type="b", xlab="Number of Clusters", ylab="Within groups sum of squares")}
windows()
wssplot(df) # 사용자 정의 함수
df
set.seed(1234)
nc <- NbClust(df, min.nc = 2, max.nc = 14, method = 'kmeans')
windows()
barplot(table(nc$Best.nc[1, ]),
xlab = 'Number of Clusters', ylab = 'Number of Criteria',
main = 'Number of Clusters Chosen by 26 Criteria')
그래프를 토대로 저는 4개의 군집수를 설정하여 K-means 클러스터링을 진행해 보도록 하겠습니다.
군집분석의 패키지에는 여러가지가 있지만 개인적으로 보기가 편하다고 생각한 "cclust" package를 이용해 보도록 하겠습니다
install.packages('cclust')
library(cclust)
cl.1 <- cclust(Nclus, 4, 20, method = 'kmeans')
windows()
plot(Nclus, col = cl.1$cluster)
points(cl.1$centers, col = 1:4, pch = 8, cex = 1.5)
코드는 다음과 같습니다.
points()는 각 군집에 속한 변수들을 점(point)로 찍어줍니다. col = 색상 설정 pch = 군집가운데표시 크기 , cex = 점의 크기를 설정해줄수있습니다. 코드입력뒤 결과는 다음과 같습니다.
제가이용한 cclust패키지말고도 여러 패키지가많으니 검색뒤 보기편한 패키지를 이용하시면 좋을것 같습니다.
'R > Machine-Learning' 카테고리의 다른 글
R을 이용한 머신러닝 알고리즘 -부스팅- (0) | 2022.03.12 |
---|---|
R을 이용한 머신러닝 알고리즘 -배깅- (0) | 2022.03.12 |
R을 이용한 머신러닝 알고리즘 -랜덤포레스트- (0) | 2022.03.12 |
R을 이용한 머신러닝 알고리즘 -로지스틱회귀분석- (0) | 2022.03.10 |
R을 이용한 머신러닝 알고리즘 -군집분석 1- (0) | 2022.03.07 |