#分群 K-means
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
import pandas as pd
df = pd.read_csv("StudentJob.csv",encoding = "big5")
df.head()
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
df.salary = df.salary.astype(float) #traform into float type
df.working = df.working.astype(float) #traform into float type
X = df[['salary','working']].values #tranform DataFrame to ndarray Matrix 為了predict輸入的方式
#如何選擇 k
實務上我們讓程式幫忙選擇一個適合的 k,使得群間差異最大、群內差異最小
from sklearn import cluster, datasets, metrics
import matplotlib.pyplot as plt
# 迴圈
silhouette_avgs = []
ks = range(2, 11)
for k in ks:
kmeans_fit = cluster.KMeans(n_clusters = k).fit(X)
cluster_labels = kmeans_fit.labels_
silhouette_avg = metrics.silhouette_score(X, cluster_labels)
silhouette_avgs.append(silhouette_avg)
# 作圖並印出 k = 2 到 10 的績效
plt.bar(ks, silhouette_avgs)
plt.show()
print(silhouette_avgs)
由績效圖我們發現 在2群、3群的績效比較好,因此我們可以將K設定為2 OR 3
km = KMeans(n_clusters=2) #K=2群
y_pred = km.fit_predict(X)
plt.figure(figsize=(10, 6))
plt.xlabel('Salary')
plt.ylabel('Rate of working')
plt.scatter(X[:, 0], X[:, 1], c=y_pred) #C是第三維度 已顏色做維度
plt.show()
km.cluster_centers_ #各群中心點(X,Y)的位置

您好,感謝分享,請問本範例中的StudentJob.csv檔,可以至何處下載練習 謝謝
hi 網路上有很多範例檔唷 我一時找不到,你可以下載 鳶尾花範例 網路上應該很多 希望有幫助到你^^
我是個新手,有個很大問題想請教, "from sklearn.cluster import KMeans" sklearn.cluster本身沒有KMeans, 您是如何匯入的?
hello 想請問你的python版本? 因為我3.6的版本是有的 會不會是你版本的問題呢
您好 請問 下面兩個Table(表一 & 表二) , 我若僅是利用”代號”當作Key, 為何在 PowerPivot , 無法做出1對1的關聯, 都僅能做出1對多的關聯??? 這樣導致 跨表查詢, 資料重複(班級重複)!! 代號 姓名 地址 001 AA 台北市 002 BB 新北市 表一 代號 姓名 地址 001 AA 台北市 002 BB 新北市 表二 謝謝
您好 對不起 表二如下 , 前一封表二錯誤 代號 姓名 班級 001 AA 中班 002 BB 大班 謝謝 表二