function varargout = kmeans(X, k, varargin)
%K 均值聚类.
% IDX = KMEANS(X, K) 分割 X[N P]的数据矩阵中的样本为 K 个类,是一种
最小化类内点到中心距离和的总和的分割。
% 矩阵 X 中的行对应的是数据样本,列对应的是变量。
% 提示: 当 X 是一个向量,本函数会忽略它的方向,将其当作一个[N 1]的数
据矩阵。
% KMEANS 函数返回一个代表各个数据样本所属类别索引的[N 1]维向量,函
数默认使用平方的欧氏距离。
% KMEANS 将 NaNs 当作丢失的数据并且忽略 X 中任何包含 NaNs 的行
%
%
% [IDX, C] = KMEANS(X, K) 返回一个包含 K 个聚类中心的[K P]维的矩阵 C.
%
% [IDX, C, SUMD] = KMEANS(X, K) 返回一个类间点到聚类中心距离和的[K
1]维向量 SUMD。
%
% [IDX, C, SUMD, D] = KMEANS(X, K) 返回一个每个点到任一聚类中心距离
的[N K]维矩阵 D。
%
% [ ... ] = KMEANS(..., 'PARAM1',val1, 'PARAM2',val2, ...) 指定了可
选参数对(参数名/参数值)来控制算法的迭代。
% 参数如下:
%
% 'Distance' - 距离测度, P 维空间, KMEANS 算法需要最小化的值
% 可以选择:
% 'sqeuclidean' - 平方的欧氏距离 (默认)
% 'cityblock' - 曼哈顿距离,各维度差异的绝对值之和。
% 'cosine' - 1 减去两个样本(当作向量)夹角的余弦值
% 'correlation' - 1 减去两个样本(当作值的序列)的相关系数
%
% 'hamming' - 汉明距离,二进制数据相匹配位置的不同比特
百分比。
%
% 'Start' - 选择初始聚类中心的方法,有时候也称作种子。
% 可以选择:
% 'plus' - 默认值。 利用 k-means++算法从 X 中选择 K 个观测
值:从 X 中随机的选取第一个聚类中心;之后的
% 聚类中心以一定的概率从剩余的样本中根据其到最近
的聚类中心的比例来随机的选取。
% 'sample' - 随机的从 X 中选取 K 个观测值。
% 'uniform' - 根据 X 的取值范围均匀的随机选取 K 个样本,对汉明
距离不适用。
评论1