【K-means算法】matlab代码实例学习

1.

MATLAB函数Kmeans

使用方法:

Idx=Kmeans(X,K)

[Idx,C]=Kmeans(X,K)

[Idx,C,sumD]=Kmeans(X,K)

[Idx,C,sumD,D]=Kmeans(X,K)

[…]=Kmeans(…,’Param1’,Val1,’Param2’,Val2,…)

各输入输出参数介绍:

X: N*P的数据矩阵,N为数据个数,P为单个数据维度

K: 表示将X划分为几类,为整数

Idx: N*1的向量,存储的是每个点的聚类标号

C: K*P的矩阵,存储的是K个聚类质心位置

sumD: 1*K的和向量,存储的是类间所有点与该类质心点距离之和

D: N*K的矩阵,存储的是每个点与所有质心的距离

https://blog.csdn.net/wys7541/article/details/82153844

2.

输入:聚类的个数K,数据集,样本距离计算依据

输出:K个聚类

https://blog.csdn.net/sinat_38648388/article/details/83896131

3.

1.仅适合于数值属性的数据。

2.对正态分布(高斯分布)数据聚类效果最佳。

方法:

1. 从D中N个对象任意选择k个对象作为初始簇中心;

2. 根据欧氏距离,依次比较其余每个对象与各个簇中心的距离;选择距离最近的簇,依次把N个对象划分到k个簇中;

3. 完成第一次划分后,重新计算新的簇中心即均值,然后重新划分数据对象,直到新的簇中心不再发生变化。

https://blog.csdn.net/qiu1440528444/article/details/80611942

4.% 输入: data, 为一个 矩阵 M×N, 表示样本集,其中M表示共有M个样本, N表示每一个样本的维度;5.% k_value, 表示聚类的类别数目;

% 输出:    output, 是一个列向量 M×1,表示每一个样本属于的类别编号;


https://www.cnblogs.com/yinheyi/p/6132362.html5.


https://www.cnblogs.com/tiandsp/p/3040883.html

6

.


https://blog.csdn.net/qq_20936739/article/details/78342882

7

.

1,kmeans的k是必须已知的,也就是我必须预先知道分成几类

2,虽然你给定的是K类,但是我最终是有可能跑出来的类数小于初始设定的k,虽然每一个聚类中心都经过初始化,但是最终有的聚类中心可能会不包含一个点,那么这个聚类中心相当于可以省去,即分成k-1类(讲道理这是一件好事,说明原来我认为需要分5类,现在程序跑出来发现4类是最好的,这就达到了处理数据的目的,但是这并不是说我k随便给,最终结果就是最优解,很可能3类是最优,但是4类也能分,但是5类就很难分了,具体比如下面的一个例子) 。

(后来的注释: 但是空聚类也有处理方法,就是聚类中心替换为当前距离任意聚类中心最远的点)

3,数据可以是任意维度,修改的仅仅是求距离的方式。

https://blog.csdn.net/fengsigaoju/article/details/52167802