MachineLearning Exercise 7 : K-means Clustering and Principle Component Analysis

findClosestCentroids.m

m = size(X,1);

for i=1:m
    [value index] = min(sum((repmat(X(i,:),K,1)-centroids).^2,2));
    idx(i) = index;
end

computeCentroids.m

temp = [X idx];
// pdf说能向量化实现更高效,本人对matlab实在不熟,勉强实现了下,若有大神,敬请赐教。
for i=1:K
    [index_row index_column]= find(temp(:,end) == i);
    centroids(i,:) = mean(X(index_row,:));
end

pca.m

sigma = X‘*X.*(size(X,1));
[U S V] = svd(sigma);

projectData.m

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

recoverData.m

temp = zeros(size(Z,1),size(U,1)-K);
X_rec = [Z temp]*U‘;

这里关于PCA的练习相对比较简单,UFLDL上面的内容比较多,有兴趣的同学可以在做完UFLDL练习后,到UFLDL学习笔记 ---- 主成分分析与白化比较下,如有理解错误,万望指教,谢谢。

时间: 2024-10-01 07:20:17

MachineLearning Exercise 7 : K-means Clustering and Principle Component Analysis的相关文章

R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法

基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成聚簇 随机选择一个非中心点,用它代替某个现有的中心点,计算这个代换的总代价S 如果S<0,则用代替,形成新的k个中心点集合 重复2,直至中心点集合不发生变化 K中心法的实现:PAM PAM使用离差平方和来计算成本S(类似于ward距离的计算) R语言的cluster包实现了PAM K中心法的优点:对于&

51nod 1116:K进制下的大数

51nod 1116:K进制下的大数 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1116 题目大意:给定一个大数,该数在$K$进制下是$K-1$的倍数,问最小的$K$($2 \leqslant K \leqslant 36$)是多少,若无解输出No Solution. 二项式定理 这题虽然可以暴力枚举,但还有更优雅的做法. 考虑一个$K$进制的大数$A$可以被表示为$\sum_{x=0}a_xK^x$,

机器学习算法系列(1):K近邻

一.K近邻算法 K近邻算法简单.直观.首先给出一张图,根据这张图来理解最近邻分类器. 根据上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据.也就是说,现在,我们不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形或者红色小三角形),下面,我们就要解决这个问题:给这个绿色的圆分类. 我们常说,物以类聚,人以群分,判别一个人是一个什么样的人,常常可以从他身边的朋友入手,所谓观其友,而识其人.我们不是要判别上图中那个绿色的圆

机器学习算法:k近邻

前言: 最近在研究机器学习,过程中的心得体会会记录到blog里,文章与代码均为原创.会不定期龟速更新.注意这不是教程,但是估计能帮到一些刚入门的同学. ------------------------ 我是分割线 ------------------------ k近邻(k-Nearest Neighbor,KNN)算法,应该是机器学习里最基础的算法,其核心思想是:给定一个未知分类的样本,如果与它最相似的k个已知样本中的多数属于某一个分类,那么这个未知样本也属于这个分类. 所谓相似,是指两个样本

第十篇:K均值聚类(KMeans)

前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类结果描述:4. 将聚类结果图形化展示:5. 选择最优center并最终确定聚类方案:6. 图形化展示不同方案效果并提交分析报表. 人口出生/死亡率聚类分析 - K均值聚类 1. 载入并了解数据集 1.1 从网上下载一份txt格式的关于人口出生率统计的数据(countries.txt).其内容大致如下

Python图像处理(11):k均值

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 K均值是一个经典的聚类算法,我们试试在python下使用它. 首先以(-1.5, -1.5)和(1.5, 1.5)为中心点各生成10个点的随机坐标值,我们希望用K均值算法将它们正确的分类. # 创建测试的数据点,2类 # 以(-1.5, -1.5)为中心 rand1 = np.ones((10,2)) * (-2) + np.random.rand(10, 2) print(rand1) # 以

转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中

转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比如: 数组1:[4, 10, 15, 24, 26] 数组2:[0, 9, 12, 20] 数组3:[5, 18, 22, 30] 最小的区间是[20, 24],这个区间包含了数组1中的24,数组2中的20,数组3中的22 思考时间~~~ 分析 该题看起来还算比较简单,大家通常都会想到:为每一个数组

Exercise(15):杨辉三角

/* 打印出杨辉三角形 输入:n 输出:n行 样例:如下图 输入:4 输出: 1 1 1 1 2 1 1 3 3 1 输入:6 输出: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 问题分析: 杨辉三角的一些基本性质: i. 每个数等于它上方两数之和. ii. 每行数字左右对称,由1开始逐渐变大. iii.第n行的数字有n项. ... 1.根据性质i,可以用二维数组(n行,n+(n-1)列)储存杨辉三角(含有空格) 2.除了第一行的1外,其余位置的值均可

软件——机器学习与Python,聚类,K——means

K-means是一种聚类算法: 这里运用k-means进行31个城市的分类 城市的数据保存在city.txt文件中,内容如下: BJ,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64TianJin,2459.77,495.47,697.33,302.87,284.19,735.97,570.84,305.08HeBei,1495.63,515.90,362.37,285.32,272.95,540.58,364.91,188.63