Ng 机器学习week8编程练习

主要是简单的聚类和pca降维

function idx = findClosestCentroids(X, centroids)

K = size(centroids, 1);
m=size(X,1);
% You need to return the following variables correctly.
idx = zeros(size(X,1), 1);
A=zeros(m,K);
for i=1:K
    for j=1:m;
    A(j,i)=sum((X(j,:)-centroids(i,:)).^2);
    end
end
[s,d]=min(A');
idx=d';

end


function centroids = computeCentroids(X, idx, K)

[m n] = size(X);
centroids = zeros(K, n);
c=zeros(K,1);
for i=1:K
    c(i,1)=size(find(idx==i),1);
end
for i=1:m
    centroids(idx(i,1),:)=centroids(idx(i,1),:)+X(i,:);
end
for i=1:K
    centroids(i,:)=centroids(i,:)/c(i,1);
end

end


function [U, S] = pca(X)

[m, n] = size(X);
U = zeros(n);
S = zeros(n);
sigma=1/m*X'*X;
[U,S,D]=svd(sigma);

end


function Z = projectData(X, U, K)

Z = zeros(size(X, 1), K);
U_reduce=U(:,1:K);
Z=X*U_reduce;

end


function X_rec = recoverData(Z, U, K)

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

end








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值