聚類算法,無監督學習的代表算法,又叫做「無監督分類」
即在訓練的時候只需要特徵矩陣,不需要真實值標籤
可以有效地幫助我們探索數據的自然分布
一、KMeans算法的運行過程
運行的流程如下:
自動聚類時的質心點的每步驟變化如下:
下圖中紅色x和藍色x即為質心點
二、sklearn中的KMeans算法
聚類算法位於sklearn中有的cluster包下
用法如下:
import sklearn.cluster as sc #導入聚類算法包n_clusters = 3 #質心數設定為3#訓練數據cluster = sc.KMeans(n_clusters=n_clusters, random_state=0).fit(X)y_pred = cluster.labels_ #獲取結果print(y_pred) #列印結果
三、基於sklearn的kmeans壓縮圖片
為什麼可以用哦過KMeans算法來做壓縮呢?
其具體思就是將原來很多的顏色用少量的顏色去表示
這樣就可以大幅減小圖片大小了
如:將圖片只保留8種顏色,下圖就是把一幅彩色圖片只保留8種顏色後的結果
代碼如下:
import matplotlib.pyplot as plt #導入圖片處理包,這裡用matplotlibimport sklearn.cluster as sc #導入聚類包import numpy as np #導入numpyimg = plt.imread('9.jpg') #讀取圖片img = img.reshape((1001*1500 , 3)) #改變圖片矩陣形狀kmeans = sc.KMeans(n_clusters=8).fit(img) #帶入聚類算法訓練#print(kmeans.labels_)cc = kmeans.cluster_centers_ #獲得質心cc = cc.astype(np.uint8) #轉型newImage = []for i in kmeans.labels_:newImage.append(list(cc[i,:]))newImage = np.array(newImage)newImage = newImage.reshape((1001,1500,3))plt.imshow(newImage)plt.show()