問題:給你一張這樣的圖,也沒給其他資訊,讓你去給他們分類?怎麼分類
那麼,我們可能會以帽子
或頭髮等為特徵對他們進行分類,物以類聚,人以群分
1. 隨機在資料當中抽取三個樣本,當做三個類別的中心點(k1,k2,k3). ##圖一,顏色實心標記##
2. 計算其餘的點分別到這三個中心點的距離,這樣每乙個點(樣本)就有3個距離(a,b,c),從中選出距離最近的乙個中心點作為自己的標記形成三個族群.
3. 分別計算這三個族群的平均值,把三個平均值與三個舊的中心點進行比較.
- 如果相同:結束聚類.
- 如果不同:把這個平均值當做新的中心點,重複第二步第三步直到結束聚類.
1. 隨機設定k個特徵空間內的點作為初始的聚類中心2. 對於其他每個點計算到k個中心的距離,未知的點選擇最近的乙個聚類中心點作為標記類別3. 接著對標記聚類中心之後,計算每個聚類的新中心點(平均值)4. 如果計算得出的新中心點與原中心點一樣,那麼聚類結束,否則重新進行第二步驟
sklearn.cluster.kmeans(n_clusters=8,init='k-means++')k聚類有什麼作用?聚類一般用在分類演算法之前,然後進行**.聚類流程:-means聚類
n_clusters:開始的聚類中心數量
init:初始化方法,預設為
'k-means++
'labels_:預設標記的型別,可以和真實值比較(不是值比較)
案例演示:
# 匯入案例資料輸出結果:import
pandas as pd
from sklearn.decomposition import
pca
#讀取四張表的資料
prior = pd.read_csv(r'
c:\users\luowe\desktop\week9\week9\instacart\order_products__prior.csv')
product = pd.read_csv(r'
c:\users\luowe\desktop\week9\week9\instacart\products.csv')
orders = pd.read_csv(r'
c:\users\luowe\desktop\week9\week9\instacart\orders.csv')
aisles = pd.read_csv(r'
c:\users\luowe\desktop\week9\week9\instacart\aisles.csv')
#合併四張表到一張表,(使用者-物品類別)
data = pd.merge(prior, product, on='
product_id')
data = pd.merge(data, orders, on='
order_id')
data = pd.merge(data, aisles, on='
aisle_id')
#建立乙個以使用者為行,產品為列的表 # 即使用者和產品進行交叉
table = pd.crosstab(data['
user_id
'], data['
aisle'])
#資料結構為(206209, 134),需要做主成分分析,進行降維
pca = pca(n_components=0.9) #
保留90%的資料
res = pca.fit_transform(table) #之前的資料降維學習的資料
資料量大,把資料減
x = res[:500]
#假設使用者一共分為4個類別
from sklearn.cluster import
kmeans
km = kmeans(n_clusters=4)
km.fit(x)
#聚類 ,分類加上標記
predict = km.predict(x)少
500個結果,把這四個類別畫出來:
importmatplotlib.pyplot as plt
plt.figure(figsize=(10,10))
#建立四個顏色
colored = ['
green
','red
','yellow
','blue']
color=[colored[i] for i in
predict]
plt.scatter(x[:, 1],x[:, 11],color=color) #
散點圖,x第1列,y第11列
plt.xlabel('1'
)plt.ylabel('2
') plt.show()
#因為只取了2個維度,所以看上去...
聚類效果的好壞
# 外部聚類最大化,內部距離最小化 #
##輪廓係數,計算聚類效果的好壞 ##
考慮極端情況:
完美聚類 bi>>ai : sci=1最差聚類 bi<
sklearn.metrics.silhouette_score(x,labels)
計算所有樣本的平均輪廓係數x:特徵值
labels:被聚類標記的目標值
#輸出:# 評判聚類效果,輪廓係數
from sklearn.metrics import
silhouette_score
silhouette_score(x,predict)
# 通過不停的調優,網格搜尋,交叉驗證可以得到最好的聚類效果
特點採用迭代, 直觀易懂, 並且實用缺點容易收斂到區域性最優解.(多次聚類)....#類 裡面有區域性聚類#
注意 : 聚類一般做在分類之前
K Means聚類演算法
k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...
聚類演算法 K means
演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...
k means聚類演算法
說到聚類,得跟分類區別開來,分類是按人為給定的標準將樣本歸到某個類別中去,在機器學習中多是監督學習,也就是訓練樣本要給標籤 正確的類別資訊 而聚類是在某種規則下自動將樣本歸類,在機器學習中是無監督學習,不需要提前給樣本打標籤。k means聚類演算法,就是在某種度量方式下,將樣本自動劃分到k個類別中...