Week8_3Program_K-Means Clustering and PCA编程解析

Week8_3Program_K-Means Clustering and PCA编程解析

1. ex7 流程分析

1.1 plotData

按照ex7.m中的流程走一遍


2. 编程分析

2.1 Find closest centroids 0 / 30

计算公式: ||x(i)μj||2 | | x ( i ) − μ j | | 2
X=(300x2) K=3 centroids=(3x2) idx=(300x1)
在 findClosestCentroids.m 中添加

distance = zeros(K, 1);
for i = 1:length(idx)    
    for j = 1:K
        diff = (X(i,:) - centroids(j,:)) .^ 2;
        distance(j) = sum(sum(diff));       
    endfor
    [value, idx(i)] = min(distance);
endfor

每一行的2个数,代表着一个点的(x,y)坐标
a. diff 行就是求两个值之间的差
X=[1 2; 3 4; 5 6; …..] u=[3 3; 6 2; 8 5];
则diff行就是 1-7 2-8 = -6 -6, 再求平方 36 36
b. X中的第1行(1,2)与u中的每个向量执行a的操作
c. 最后两个sum,先对列求和,再对行求和,就是distance了
distance[1]是x1与u1的差
distance[2]是x2与u2的差
distance[3]是x3与u3的差
d. 求数组distance中的最小值,及其索引
其中value是最小的值, idx(i)是最小值的索引

2.2 Compute centroid means 0 / 30

计算公式: μk:=1|Ck|iCkx(i) μ k := 1 | C k | ∑ i ∈ C k x ( i )
X=(300x2) K=3 centroids=(3x2) idx=(300x1)
计算公式:
X=(300x2) K=3 centroids=(3x2) idx=(300x1)
在 computeCentroids.m 中添加:

for k = 1:K
    xPos = find(idx == k);
    if(size(xPos,1)>0)
      avg = mean(X(xPos,:));
      centroids(k, :) = avg;
end

* 将距离u1最近的找出来,取个平均值作为新的u1 *
* 将距离u2最近的找出来,取个平均值作为新的u2 *
* 将距离u3最近的找出来,取个平均值作为新的u3 *
* 当k=1时, xPos行就是找到距u1最近的下标索引 *
* a. 将这些下标索引带回到X中去, 找到这些点 *
* b.将这些点的x坐标取平均值作为新的u1的x坐标 *
* c. 将这些点的y坐标取平均值作为新的u1的y坐标 *

3. PCA

3.1 PCA 0 / 20

featureNormalize在PCA之前先Normalize过了
计算公式:
协方差covariance Matrix= Σ:=1mXTX Σ := 1 m X T X
SVD= [U, S, V] = svd(Sigma)

sigma = (X' * X) ./ m;
[U, S, V] = svd(sigma);

用octave自带的svd函数

3.2 Project data 0 / 10

在projectData.m中添加:

subsetU = U(:, 1:K);
Z = X * subsetU;
3.3 Recover data 0 / 10

在recoverData.m中添加:

subsetU = U(:, 1:K);
X_rec = Z * subsetU';

3. 总结

1 Find closest centroids 0 / 30
2 Compute centroid means 0 / 30
3 PCA 0 / 20
4 Project data 0 / 10
5 Recover data 0 / 10

K-means聚类算法是一种无监督学习算法,用于解决聚类问题。它的原理简单、容易理解,因此得到了广泛的应用。该算法通过对数据进行聚类,将相似的数据点分为同一簇,从而实现对数据的分类和分组。 PCA算法(即主成分分析法)是一种常见的无监督学习算法,也是K-means聚类算法中的一种应用。PCA算法主要用于降维和数据压缩,能够将高维数据映射到低维空间中,保留最重要的特征。它的主要思想是通过线性变换找到数据中的主要方向,即主成分,从而实现数据的降维和可视化。在K-means聚类算法中,PCA可以用于对数据进行降维处理,从而减少计算复杂度并改善聚类效果。 综上所述,K-means聚类算法和PCA算法都是无监督学习算法,用于解决聚类问题。K-means聚类算法通过对数据进行聚类,将相似的数据点分为同一簇,而PCA算法则主要用于降维和数据压缩,能够将高维数据映射到低维空间中,并保留最重要的特征。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [简述 K-means聚类算法](https://blog.csdn.net/weixin_47906106/article/details/125388724)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值