对三维数据集的K-means聚类研究

对三维数据集的K-means聚类研究


 

本文是在《根据”关于‘k-means算法在流式细胞仪中细胞分类的应用’的学习笔记总结“撰写的中期报告》一文的基础上,对该实验数据中的CD3/CD8/CD45三种抗原分子的三列荧光强度数据在Matlab环境下进行K-means聚类研究。

实验数据地址:http://pan.baidu.com/s/1hqomDq0

由于之前论文查重时查到了《根据”关于‘k-means算法在流式细胞仪中细胞分类的应用’的学习笔记总结“撰写的中期报告》一文,现特摘取论文中部分内容修改后辑成本文,文字尽量精简。待论文事情结束后我会在整理成另一篇文章。


对以CD3/CD8/CD45为分类指标所对应的三列光谱数据进行减法聚类。

程序

A=load(‘CD3-8-45-4.txt‘);

X=A(:,[4 5
6]);

[C,S]=subclust(X,0.5,[],[1.25 0.5 0.15
0]);

得到聚类中心为

C=

79 75 62
102 74
490
576 74 536

设置参数k=3,进行聚类。

程序

idx3=kmeans(X,3,‘dist‘,‘city‘,‘display‘,‘iter‘);

得到聚类中心为

cent3=

99 78 470

552 97 552
  78 78
54

由于都是三维矩阵,为便于比较,可以用三维散点图在三维空间中显示出两组聚类中心,分别用星号*和三角△表示。

程序

plot(0,0);

hold on

view(3)

plot3(C(:,1),C(:,2),C(:,3),‘*‘)

hold on

plot3(cent3(:,1),cent3(:,2),cent3(:,3),‘^‘)

图1 k=3时的两组聚类中心

两组聚类中心并不完全重合。下面两个聚类中心契合度较高,而上面一个偏离较大,显然k是不可能为3的。

在三维空间中用散点图表示出各样本点。

程序

plot(0,0);

hold on

view(3)

plot3(X(:,1),X(:,2),X(:,3),‘*‘)

图2 三维样本集的散点图

各个坐标轴分别表示三种抗原分子对应的荧光强度。结合图1,很容易猜测有四个聚类中心,即k很可能等于4。

设置k=4,再次进行K-means聚类。

程序

[idx4
cent4]=kmeans(X,4,‘dist‘,‘city‘,‘display‘,‘iter‘);

得到

cent4 =

98 79 472
552 97 552
70 78 0
85 77
91

在上面图1的三维空间中继续绘出聚类中心cent4,用圆圈○表示。

程序

plot(0,0);

hold on

view(3)

plot3(C(:,1),C(:,2),C(:,3),‘*‘)

hold on

plot3(cent3(:,1),cent3(:,2),cent3(:,3),‘^‘)

hold on

plot3(cent4(:,1),cent3(:,2),cent4(:,3),‘o‘)

图3 k=3、4时的聚类中心

显然,k=4时的聚类中心包含了k=3时的两组聚类中心,而且契合度非常高,所以应该聚成4类。

绘制k分别取3和4时的轮廓图,并比较。

程序

figure(1)

[silh3,h3]=silhouette(X,idx3,‘city‘);

figure(2)

[silh4,h4]=silhouette(X,idx4,‘city‘);

图4
k=3时轮廓图

图5
k=4时轮廓图

通过比较,很容易确定k=4时,聚类效果更好。

采用不同的颜色、不同的标记,用比较容易观察的三维散点图展示上面的最终聚类。

程序

plot(0,0)
hold
on
view(3)
plot3(X(idx4==1,1),X(idx4==1,2),X(idx4==1,3),‘b*‘)
hold on
plot3(X(idx4==2,1),X(idx4==2,2),X(idx4==2,3),‘r.‘)
hold on
plot3(X(idx4==3,1),X(idx4==3,2),X(idx4==3,3),‘yo‘)
hold on
plot3(X(idx4==4,1),X(idx4==4,2),X(idx4==4,3),‘^‘)

图6 样本数据分成四类的三维散点图

font-size: 16px;

对三维数据集的K-means聚类研究,布布扣,bubuko.com

时间: 2025-01-04 06:06:31

对三维数据集的K-means聚类研究的相关文章

k means聚类过程

k-means是一种非监督 (从下图0 当中我们可以看到训练数据并没有标签标注类别)的聚类算法 0.initial 1.select centroids randomly 2.assign points 3.update centroids 4.reassign points 5.update centroids 6.reassign points 7.iteration reference: https://www.naftaliharris.com/blog/visualizing-k-me

机器学习--k均值聚类(k-means)算法

一.基本原理 分类是指分类器根据已标注类别的训练集,通过训练可以对未知类别的样本进行分类.分类被称为监督学习.如果训练集的样本没有标注类别,那么就需要用到聚类.聚类是把相似的样本聚成一类,这种相似性通常以距离来度量.聚类被称为无监督学习. 聚类是指根据"物以类聚"的原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程.它的目的是使得属于同一个簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似.与分类规则不同,进行聚类前并不知道

k均值聚类

目录 一.k均值简介 二.应用简介 三.算法 四.选择合适的K 五.具体实例 一.k均值简介 K均值聚类是一种无监督学习,对未标记的数据(即没有定义类别或组的数据)进行分类. 该算法的目标是在数据中找到由变量K标记的组.该算法迭代地工作基于所提供的特征,将每个数据点分配给K个组中的一个. 基于特征相似性对数据点进行聚类. K均值聚类算法的结果是: 1.K簇的质心,可用于标记新数据 2.训练数据的标签(每个数据点分配给一个集群) 二.应用简介 K均值聚类算法用于查找未在数据中明确标记的组.这可用于

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

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

机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定,可视化数据分布,直观确定即可): 2 遍历数据集的每个实例,计算其到每个质心的相似度,这里也就是欧氏距离:把每个实例都分配到距离最近的质心的那一类,用一个二维数组数据结构保存,第一列是最近质心序号,第二列是距离: 3 根据二维数组保存的数据,重新计算每个聚簇新的质心: 4 迭代2 和 3,直到收敛

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

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

ML: 聚类算法R包-K中心点聚类

K-medodis与K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值,在 K-medoids算法中,我们将从当前cluster 中选取这样一个点--它到其他所有(当前cluster中的)点的距离之和最小--作为中心点.K-medodis算法不容易受到那些由于误差之类的原因产生的脏数据的影响,但计算量显然要比K-means要大,一般只适合小数据量. K-medoids

k-均值聚类算法;二分k均值聚类算法

根据<机器学习实战>一书第十章学习k均值聚类算法和二分k均值聚类算法,自己把代码边敲边理解了一下,修正了一些原书中代码的细微差错.目前代码有时会出现如下4种报错信息,这有待继续探究和完善. 报错信息: Warning (from warnings module): File "F:\Python2.7.6\lib\site-packages\numpy\core\_methods.py", line 55 warnings.warn("Mean of empty

机器学习实战笔记-利用K均值聚类算法对未标注数据分组

聚类是一种无监督的学习,它将相似的对象归到同一个簇中.它有点像全自动分类.聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好 簇识别给出聚类结果的含义.假定有一些数据,现在将相似数据归到一起,簇识别会告诉我们这些簇到底都是些什么.聚类与分类的最大不同在于,分类的目标事先巳知,而聚类则不一样.因为其产生的结果与分类相同,而只是类别没有预先定义,聚类有时也被称为无监督分类(unsupervised classification ). 聚类分析试图将相似对象归人同一簇,将不相似对象归到不