~今天要分享的是「Kmeans實作」~
瞭解了Kmeans的基本概念後,來看看在Python中是如何撰寫程式碼來做分析的吧~
Kmeans分析模型在sklearn的cluster套件底下:from sklearn.cluster import KMeans
在建立Kmeans模型時,有兩個重點先提醒大家:
[程式碼實作]
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
iris_data = pd.DataFrame(iris['data'],columns=iris['feature_names'])
print("DATA:",iris_data.head())
print("=====================================================================")
X=iris_data[['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']]
from sklearn.cluster import KMeans
Kmeans=KMeans(n_clusters=3)
Kmeans.fit(X)
Kmeans_pred=Kmeans.predict(X)
iris_data['cluster']=Kmeans_pred
print("DATA:",iris_data.head())
print("=====================================================================")
a=iris_data.groupby('cluster').mean()
b=iris_data.groupby('cluster').count()
print("各群在每個變數下的平均值:",a)
print("=====================================================================")
print("各群個數:",b["sepal length (cm)"])
使用sklearn的資料集”iris”進行分析,n_clusters設定為3
從結果可以發現,分類在第零群的有62個,且'sepal length (cm)'約為5.90,'sepal width (cm)'約為2.75,'petal length (cm)'約為4.39,'petal width (cm)'約為1.43;分類在第一群的有50個,且'sepal length (cm)'約為5.01,'sepal width (cm)'約為3.43,'petal length (cm)'約為1.46,'petal width (cm)'約為0.25;分類在第二群的有38個,且'sepal length (cm)'約為6.85,'sepal width (cm)'約為3.07,'petal length (cm)'約為5.74,'petal width (cm)'約為2.07。
若是要做成分析報告的話,我們可以更進一步對於每個群做命名,像是我觀察到第二群的幾乎所有數據都高於其他兩個群,所以我會將第二群命名為「大花花群」;而第一群只有在” sepal width (cm)”的數據是三者中最高的,其餘都是最低的,所以我會將第一群命名為「萼片長花花群」;而由於第零群的數據幾乎都位於中間值,所以我會將第零群命名為「普通花花群」。
註:命名的名稱因人而異,筆者只是將看到數據結果的反應作命名而已,若有更好的名稱歡迎在下方留言處留言歐!