這一部分實現k-means聚類方法並用於影象壓縮。
k-mean演算法是一種自動將相似資料聚類到一起的方法。該演算法是乙個迭代的過程,開始時隨機設定乙個質心,之後重複地將資料點分配到離其最近的質心,再重新計算質心。
演算法過程就是重複以下兩個步驟:
1)將每個樣本點分配到最近的質心
2)重新計算每個類的均值作為新的質心
由於一開始選定的隨機質心對結果有很大的影響,因此通常用隨機化質心執行多次。最後選擇代價函式最低的值作為解。
1.1 最近鄰質心
代價函式(距離公式):
c(i)為質心的索引,μ(j)為第j個質心的座標。
**思路就是計算每個樣本點到每個質心的距離,選擇距離最小的作為最近鄰質心。
for i =1:
size(x
,1) minerror =
sum((x
(i,:)-
centroids(1
,:))
.^2)
; minidx =1;
for j =2:
k error =
sum((x
(i,:)-
centroids
(j,:))
.^2)
;if error < minerror
minerror = error;
minidx = j;
endidx
(i)= minidx;
endend
1.2 計算質心
c(k)為屬於第k類的資料集,如果x(3)和x(5)屬於第2類,那麼μ(2)=(x(3)+ x(5))/ 2
for i =1:
k s =
sum(idx == i);if
(s ~=0
)centroids
(i,:)=
mean(x
(find
(idx == i),:
))else
centroids
(i,:)=
zeros(1
, n)
; end
end
這一部分使用使用k-means進行影象壓縮。將數千種顏色的影象壓縮為16種顏色。
對於一張128×128,使用rgb表示的影象,每個點用24位表示,需要儲存的畫素點為128×128×24 = 393216,壓縮為16種顏色(4位表示)後只需要128 × 128 × 4 + 24 × 16 = 65920,基本為原影象的六分之一,我們需要使用k-means選出最適合的16種顏色。
這一部分應用主成分分析降維。
計算步驟:
1)計算資料的協方差矩陣
2)使用svd計算本徵向量u1,u2,…,un,對應於資料變換的主要成分。
在使用pca之前,通常需要對資料進行歸一化處理。
sigma =
(x' *x)
/ m;[u
,s,v
]=svd(sigma)
;
計算出主成分之後就可以通過將資料對映到低緯度的方法,降低特徵維度。
將資料集x對映到主成分u中的前k個成分。
ureduce =u(
:,1:
k);z
=x* ureduce;
降維後可以將資料對映回原本維度
ureduce =u(
:,1:
k);x_rec =
z* ureduce';
結果:
圖中藍色點表示原始資料,紅色圓圈表示對映後的資料。
吳恩達機器學習ex7 PCA降維
主成分分析 principal component analysis,pca 1 樣本 1.1 樣本資料集 匯入乙個二維的資料集並顯示,得到。1.2 執行pca演算法 pca演算法包括如下幾個部分 對原始資料進行歸一化 其歸一化的演算法為x x mu sigma,其中mu為資料的均值,sigma為資...
吳恩達機器學習 程式設計練習 ex6 1
本節練習是為了應用svm演算法,並靈活運用c和gamma引數 首先load資料集並plot part1 讀取資料1,並將資料整理成可識別的格式 path c users huanuo pycharmprojects ml ex6 svm ex6 ex6data1.mat m loadmat path...
吳恩達機器學習 程式設計練習7
本練習的主題是k means clustering and principal component analysis,即k均值聚類演算法和主要成分分析。因此這篇文章也分兩部分來討論,根據作業檔案的步驟來分別對k均值聚類演算法和pca進行討論原理以及如何實現。k means clustering al...