R - K-means 군집분석 예제





이번에는 k-means 군집분석 예제를 다뤄봅니다. k-means 군집분석은 분리형 군집분석 알고리즘 가운데 하나로서 "N차원의 모집단을 표본의 속성에 따라 k개 세트로 나누는 과정"으로 정의됩니다.


코드

# 비계층적 군집분석
# 군집 수를 알고 있는 상태에서 군집분석을 함 -k-means clustering


iris.s <- scale(iris[-5]) #꽃 종류(spacies)는 뺌
head(iris.s) #정규화가 됨

#군집갯수 결정
install.packages("NbClust") #NbClust 를 사용 해서 k 값을 얻을수 있다.
library(NbClust)
nc <-NbClust(iris.s,min.nc = 2,max.nc = 10,method = 'kmeans')
nc
plot(table(nc$Best.nc[1,]))

#k-means모델
iris.k <- kmeans(iris.s, centers = 3, iter.max =100 )  # centers = 3(best number) iter.max =(최대 반복수)
iris.k

#confusion matrix
table(iris$Species,iris.k$cluster)

#시각화
#k-means 결과
plot(iris[-5],col=iris.k$cluster)
#실제값
plot(iris[-5],col=iris$Species)


par(mfrow=c(1,1)) #그래프 1개만 보기 혹은 2개 보기
#k-means 결과
plot(iris[c("Sepal.Length","Sepal.Width")],col=iris.k$cluster)
#실제값
plot(iris[c("Sepal.Length","Sepal.Width")],col=iris$Species)

#PAM k-means 가 아웃라이너에 민감해서 만든것이 pam이다.
library(cluster)
iris.p <- pam(iris.s,3)
iris.p
# 세분류로 나눔
table(iris.p$clustering,iris$Species)
clusplot(iris.p)
#일반적으로 보던 방법
plot(iris[c("Sepal.Length","Sepal.Width")],col=iris.p$clustering)





샘플 데이터



본 포스팅은 KIC 캠퍼스에서 박영권 강사의 지도하에 공부하며 작성한 리포트입니다.
혹시 잘못된 내용이 있거나 문제 소지시 댓글 남겨주시면 조치하겠습니다.





댓글(0)

Designed by CMSFactory.NET