接上上篇文章:数据分析模型(二):模糊聚类分析方法及实例(附完整代码)
主要对代码里面的用到的主要函数进行详细讲解,同时也会对利用MATLAB对数据分析有质的飞跃!!!欢迎关注学习!!!
Matlab中关于模糊聚类分析的函数
- 1)pdist 计算两两对象间的欧氏距离
- 2)linkage 使用最短距离算法生成具层次结构的聚类树
- 3)cluster 从连接输出(linkage)中创建聚类
- 4)zsore(X) 对数据矩阵进行标准化处理
- 5)H=dendrogram(Z,P) 画聚类树状图
- 6)T=clusterdata(X,cutoff) 将矩阵X的数据分类
- 7) squareform 将pdist的输出转换为方阵
- 8)cophenet 计算相干系数
Y=pdist(X)
计算 m × n 矩阵X(看作 m 个 n 维行向量)中两两对象间的欧氏距离。对于有 m 个对象组成的数据集,共有(m-1)⋅ m/2
个两两对象组合。
输出Y是包含距离信息的长度为 (m-1)⋅ m/2
的向量。可用squareform
函数将此向量转换为方阵,这样可使矩阵中的元素(i,j)对应原始数据集中对象i和j间的距离。
Y=pdist(X,’metric’)
中用’metric’指定的方法计算矩阵X中对象间的距离。’metric’可取表1中特征字符串值。
表 1’metric’取值及含义
字符串 | 含 义 |
---|---|
’Euclid’ | 欧氏距离(缺省) |
’SEuclid’ | 标准欧氏距离 |
’Mahal’ | 马氏距离(Mahalanobis距离) |
’CityBlock’ | 绝对值距离 |
’Minkowski’ | 闵氏距离(Minkowski距离) |
Y=pdist(X,’minkowski’,p)
用闵氏距离计算矩阵X中对象间的距离。p为闵氏距离计算用到的指数值,缺省为2。
Z=linkage(Y)
使用最短距离算法生成具层次结构的聚类树。输入矩阵Y为pdist函数输出的 (m-1)⋅ m/2
维距离行向量。
Z=linkage(Y, 'method')
使用由’method’指定的算法计算生成聚类树。'method’可取表2中特征字符串值。
表2 ’method’取值及含义
字符串 | 含 义 |
---|---|
’single’ | 最短距离(缺省) |
’complete’ | 最大距离 |
’average’ | 平均距离 |
’centroid’ | 重心距离 |
’ward’ | 离差平方和方法(Ward方法) |
输出Z为包含聚类树信息的(m-1) × 3
矩阵。聚类树上的叶节点为原始数据集中的对象,由1到 m 。它们是单元素的类,级别更高的类都由它们生成。对应于Z中行 j 每个新生成的类,其索引为 m+j ,其中 m 为初始叶节点的数量。
第1列和第2列,即Z(i,1:2)包含了被两两连接生成一个新类的所有对象的索引。生成的新类索引为 m+j 。共有 m-1 个级别更高的类,它们对应于聚类树中的内部节点。第3列,Z(i,3)包含了相应的在类中的两两对象间的连接距离。
T=cluster(Z,cutoff)
从连接输出(linkage)中创建聚类。cutoff为定义cluster
函数如何生成聚类的阈值,其不同的值含义如表3所示。
表3 cutoff取值及含义
cutoff取值 | 含 义 |
---|---|
0cutoff作为不一致系数的阈值。不一致系数对聚类树中对象间的差异进行了量化。如果一个连接的不一致系数大于阈值,则cluster函数将其作为聚类分组的边界 |
|
2<=cutoff | cutoff作为包含在聚类树中的最大分类数 |
T=cluster(Z,cutoff,depth,flag)
从连接输出(linkage)中创建聚类。参数depth
指定了聚类数中的层数,进行不一致系数计算时要用到。不一致系数将聚类树中两对象的连接与相邻的连接进行比较。详细说明见函数inconsistent
。当参数depth被指定时,cutoff通常作为不一致系数阈值。
参数flag重载参数cutoff的缺省含义。如flag为’inconsistent’,则cutoff作为
不一致系数的阈值。如flag为’cluster’,则cutoff作为分类的最大数目。
输出T为大小为 m 的向量,它用数字对每个对象所属的类进行标识。为了找到包含在类i中的来自原始数据集的对象,可用find(T==i)。
由linkage产生的数据矩阵Z画聚类树状图。P是结点数,默认值是30。
将矩阵X的数据分类。X为 m×n 矩阵,被看作 m 个 n 维行向量。它与以下几个命令
等价:
Y=pdist(X,’euclid’)
Z=linkage(Y,’single’)
T=cluster(Z,cutoff)
将pdist的输出转换为方阵。
c=cophenet(Z,Y)
计算相干系数,它是将Z中的距离信息(由linkage()函数产生)和Y中的距离信息(由pdist()函数产生)进行比较。Z为 (m-1) × 3 矩阵,距离信息包含在第三列。Y是(m-1) ⋅m/2 维的行向量。