聚類概念
無監督問題(無標籤)
k-means算法
聚類:相似的東西分到一組
難點:評估,調參
指定一個K值,要得到簇的個數
質心:均值,向量各維取平均值
距離的度量:常用歐幾里得距離和餘弦相似度
工作流程:
KMeans實現圖像壓縮
from skimage import io
from sklearn.cluster import KMeans
import numpy as np
image = io.imread(' ')
io.imshow(image)
io.show()
rows = image.shape[0]
cols = image.shape[1]
image = image.reshape(image.shape[0]*image.shape[1], 3)
kmeans = KMeans(n_cluster=128, n_init=10, max_iter=200)
kmeans.fit(image)
clusters = np.asarray(kmeans.cluster_centers_, dtype=np.uint8)
labels = np.asarray(kmeans.labels_, dtype=np.uint8)
labels = labels.reshape(rows, cols)
np.save(" ", clusters)
io.imsave(" ", labels)
K-近鄰
1.計算已知類別數據集中的點與當前點的距離
2.按照距離依次排序
3.選取與當前點距離最小的k個點
4.確定前k個點所在類別的出現概率
5.返回前k個點出現頻率最高的類別作爲當前點預測分類
KNN算法本身簡單有效,它是一種lazy-learning算法
分類器不需要使用訓練集進行訓練,訓練時間複雜度爲0。
KNN分類的計算複雜度和訓練集中的文檔數目成正比