当前位置: 代码迷 >> 综合 >> Coursera-MachineLearning-Week8编程题目整理
  详细解决方案

Coursera-MachineLearning-Week8编程题目整理

热度:65   发布时间:2023-11-11 06:58:47.0

pca.m

sigma = (X'*X)./m;  %计算Sigma
[U,S,V] = svd(sigma);  %进行奇异值分解

projectData.m

Ureduce = U(:, 1:K);  %提取前k列
for i = 1:size(X,1)  %遍历所有样本x = X(i,:);  %获取样本Z(i,:) = x*Ureduce;  %进行降维
end

recoverData.m

for i = 1:size(Z,1)  X_rec(i,:) = Z(i,:) * U(:,1:K)';
end

computeCentroids.m

for i = 1:K  %遍历K个聚类中心centroids(i,:) = (X' * (idx == i)) / sum(idx == i);  %更新聚类中心
end

findClosestCentroids.m

k_tmp = zeros(K, 1); for i = 1:size(idx, 1)for j = 1:K  %计算样本点到每个聚类中心的距离k_tmp(j) = sum((X(i,:) - centroids(j,:)).^2);end[value,idx(i)] = min(k_tmp,[],1);  %选取最小距离的聚类
end

kMeansInitCentroids.m

randidx = randperm(size(X, 1));  %生成一个从1到k的整数的随机排列。
centroids = X(randidx(1:K), :);   %随机选取样本点进行初始化