Programming Exercise 7: K-means Clustering and Principal Component Analysis【Maching Learning】

1.1.1 Finding closest centroids

n=size(X,1);
temp = zeros(K, 1);
for i=1:n
    for j=1:K
%         temp(j)=(X(i,1)-centroids(j,1))^2+(X(i,2)-centroids(j,2))^2;
%         //上边这句提交总没分,其实我是很迷惑的。。我觉得他跟下边这句没什么区别
          temp(j)=sum((X(i,:) -  centroids(j,:)).^2);
    end
    %找最小距离的下标
    mintemp=min(temp);
    [index,~]=find(temp==mintemp);
    if length(index)==1  %注意这一块,很有可能样例点在两个簇中心的正中间,这是find函数就会返回不止一个值
        idx(i)=index;
    else
        idx(i)=index(1);
    end
end

 1.1.2 Computing centroid means

 

for i=1:K
%     这个注释掉的又错了。。。是因为今天晚上写的原因吗???写啥啥错,样例是对的,竟然还是需要找bug
%     findindex=find(idx==i);
%     l=length(findindex);
%     if l~=0
%         centroids(i,1)=sum(X(findindex,1))/l;
%         centroids(i,2)=sum(X(findindex,2))/l;
%     end
    centroids(i,:)=(X'*(idx==i))/sum(idx==i);
end

 

2.2 Implementing PCA
  [U, S, V] = svd(Sigma)
%计算协方差矩阵
Sigma=1/m*X'*X;
%计算协方差矩阵的特征向量
[U,S,V]=svd(Sigma);
%
2.3.1 Projecting the data onto the principal components
 
U reduce = U(:, 1:K) .
 
U=U(:,1:K);
Z=X*U;
2.3.2 Reconstructing an approximation of the data
 
X_rec=Z*U(:,1:K)';

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值