Liz's Blog

就是要學R #17:機器學習之K Means Clustering實作篇

| Comments

先前幾天學習過的都是supervised learning,今天終於講到unsupervised learning。

Udemy
課程名稱:Data Science and Machine Learning Bootcamp with R
講師:Jose Portilla

K Means Clustering屬於unsupervised learning,也就是在沒有預先給予任何標籤的情況下,快速找出相似的特性來分群,詳細可參考這篇
1.使用iris鳶尾花資料集

library(datasets)
head(iris)

2.利用ggplot2探索資料

library(ggplot2)

#利用散佈圖來看花瓣長度及花瓣寬度的關係。setosa很明顯都比較小,但versicolor和virginica則有些重疊。
ggplot(iris, aes(Petal.Length, Petal.Width, color = Species)) + geom_point()

3.使用K Means Clustering分群

set.seed(101)
help(kmeans)

#kmeans(x,clusters,nstart選多少個隨機的資料)
irisCluster <- kmeans(iris[, 1:4], 3, nstart = 20)

#可以看到有3個分群,群平均、平方和等資料
irisCluster

#看分群及實際的差異,setosa無懸念的完全正確,但在versicolor和virginica則有些差異。
table(irisCluster$cluster, iris$Species)
irisCluster

4.分群視覺化,載入cluster套件

library(cluster)
help(clusplot)
clusplot(iris, irisCluster$cluster, color=TRUE, shade=TRUE, labels=0,lines=0, )

1.使用UCI上紅白酒品質的資料集練習

df1 <- read.csv('winequality-red.csv',sep=';')
df2 <- read.csv('winequality-white.csv',sep=';')

#建立一個label欄位是紅酒還是白酒
df1$label <- sapply(df1$pH,function(x){'red'})
df2$label <- sapply(df2$pH,function(x){'white'})

wine <- rbind(df1,df2)
str(wine)

2.探索資料

library(ggplot2)

#利用直方圖看殘餘糖量的白紅酒分佈
ggplot(wine,aes(x=residual.sugar)) + geom_histogram(aes(fill=label),color='black',bins=50)

#利用直方圖來看檸檬酸的紅白酒分佈
ggplot(wine,aes(x=citric.acid)) + geom_histogram(aes(fill=label),color='black',bins=50)

#利用直方圖來看酒精的紅白酒分佈
ggplot(wine,aes(x=alcohol)) + geom_histogram(aes(fill=label),color='black',bins=50)

#利用散佈圖來看殘餘糖量、檸檬酸的紅白酒分佈
ggplot(wine,aes(x=citric.acid,y=residual.sugar)) + geom_point(aes(color=label),alpha=0.2) + scale_color_manual(values = c('#ae4554','#faf7ea')) +theme_dark()

#利用散佈圖來看不穩定的酸度、殘餘糖量的紅白酒分佈
ggplot(wine,aes(x=volatile.acidity,y=residual.sugar)) + geom_point(aes(color=label),alpha=0.2) + scale_color_manual(values = c('#ae4554','#faf7ea')) +theme_dark()

#不取label並命名為clus.data
clus.data <- wine[,1:12]
head(clus.data)

3.分群

wine.cluster <- kmeans(wine[1:12],2)
print(wine.cluster$centers)

4.評估分群結果(紅酒在前面探索資料的時候,看起來比較容易區分,利用K means clustering也是類似的結果。但白酒就比較多雜訊,有可能是因為玫瑰酒是被視為白酒,但又保有紅酒的特質)

table(wine$label,wine.cluster$cluster)

【延伸閱讀】
1.就是要學R #1:Basic 基礎篇
2.就是要學R #2:Matrix 矩陣篇
3.就是要學R #3:Data Frame 資料框架篇
4.就是要學R #4:List 列表篇
5.就是要學R #5:Import & Export 匯入匯出篇(csv & excel)
6.就是要學R #6:Import & Export 匯入匯出篇(SQL & web scraping)
7.就是要學R #7:R programming 基礎篇
8.就是要學R #8:R Programming 進階篇
9.就是要學R #9:資料前處理篇(dplyr、tidyr)
10.就是要學R #10:ggplot2幫你搞定資料視覺化
11.就是要學R #11:資料視覺化應用篇(ggplot2、Plotly)
12.就是要學R #12:機器學習之線性迴歸實作篇
13.就是要學R #13:機器學習之邏輯迴歸實作篇
14.就是要學R #14:機器學習之K Nearest Neighbor(KNN)實作篇
15.就是要學R #15:機器學習之決策樹、隨機森林實作篇
16.就是要學R #16:機器學習之Support Vector Machine(SVM)實作篇
17.就是要學R #17:機器學習之K Means Clustering實作篇
18.就是要學R #18:機器學習之自然語言處理(NLP)實作篇
19.就是要學R #19:機器學習之類神經網路(Neural Net)實作篇

Comments

comments powered by Disqus