혜니니의 공부방

패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 28일차 본문

공부 기록/데이터분석

패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 28일차

니니혜 2023. 3. 19. 19:56

23.03.19

#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발#패캠인강후기 #패스트캠퍼스후기 #오공완 #강필성의비즈니스데이터분석

이제 끝인뎅.. 뭘들어야할까 하다가 R 실습을 켯따. 

 


1. K-means Clustering R실습: 와인성분에 따른 품종 추정하기.

 

해당 링크: https://archive.ics.uci.edu/ml/datasets/wine

 

UCI Machine Learning Repository: Wine Data Set

Data Set Characteristics:   Multivariate Number of Instances: 178 Area: Physical Attribute Characteristics: Integer, Real Number of Attributes: 13 Date Donated 1991-07-01 Associated Tasks: Classification Missing Values? No Number of Web Hits: 2131423 Sou

archive.ics.uci.edu

 1) 종속변수: 해당와인을 생산한 포도의 품종(결과에만 사용할거임)

 2) 입력변수: 

1) Alcohol
2) Malic acid
3) Ash
4) Alcalinity of ash
5) Magnesium
6) Total phenols
7) Flavanoids
8) Nonflavanoid phenols
9) Proanthocyanins
10)Color intensity
11)Hue
12)OD280/OD315 of diluted wines
13)Proline

 

* 컴터에 R 3.6이 설치되어잇낀하지만.. 귀찮아서.. R cloud로.,.. 패키지 인스톨하기 참 귀찮

https://posit.cloud/content/yours?sort=name_asc 

 

Posit Cloud - Do, share, teach, and learn data science

 

posit.cloud

R에서  K-Means 알고리즘
 
1. k값을초기값으로먼저받고, 데이터를k개의초기군집으로나눔.
2. k개의초기군집의centroid(중심점)을설정함.
3. 각데이터개체와현재군집중심점(centroid)사이의거리를구함.
4. 만약개체가현재군집평균에가까우면현재소속군집에포함.
5. 그렇지않으면다른군집으로재할당.
6. 개별군집의평균이다시계산되어, 클러스터의중심점(centroid)를다시계산.
7. 반복하면서클러스터가더이상재지정되는점이없으면마침.
 
 install.packages("plotrix")
 install.packages("clValid")
 > install.packages("clvalid")
 library(clValid)
 library(pltrix)


 > wine <- read.csv("wine.csv")
> wine_class<- wine[,1]
> wine_x<- wine[,-1]
> wine_x_scaled <- scale(wine_x, center=TRUE, scale=TRUE)
 wine_clValid <- clValid(wine_x_scaled, 1:10, clMethods = "kmeans",
 							validation = c("internal","stability"))

마지막에 실루엣지표를 보고, 3개의 군집으로 추려진다는 것을 확인할 수 있다.

 

wine_kmc <- kmeans(wine_x_scaled,3)

str(wine_kmc)
wine_kmc$centers
wine_kmc$size
wine_kmc$clusters


wine_kmc <- kmeans(wine_x_scaled,3)

str(wine_kmc)
wine_kmc$centers


wine_kmc$size


wine_kmc$clusters

 

--- > 결국에는 데이터는 같고 크게 달라지지않는다는 것을 알 수 있읍니다.

 

real_class <- wine_class
kmc_cluster <- wine_kmc$cluster
table(real_class, kmc_cluster)

이런 군집화 결과에 따라 다시 재생성해도. 어쨋든 데이터값은 같다. 

 

cluster_kmc <- data.frame(wine_x_scaled, clusterID = as.factor(wine_kmc$cluster))
kmc_summary <- data.frame()

for (i in 1:(ncol(cluster_kmc)-1)){
  kmc_summary = rbind(kmc_summary, 
                      tapply(cluster_kmc[,i], cluster_kmc$clusterID, mean))
}

colnames(kmc_summary) <- paste("cluster", c(1:3))
rownames(kmc_summary) <- colnames(wine_x)
kmc_summary

요런 값들이 나와서 군집의 데이터를 알 수 있읍니다.

 

 

par(mfrow = c(1,3))
for (i in 1:3){
  plot_title <- paste("Radar Chart for Cluster", i, sep=" ")
  radial.plot(kmc_summary[,i], labels = rownames(kmc_summary), 
              radial.lim=c(-2,2), rp.type = "p", main = plot_title, 
              line.col = "red", lwd = 3, show.grid.labels=1)
}
dev.off()

이렇게 레이더차트를 발견할 수 있음. 


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

http://bit.ly/3Y34pE0

Comments