maxframe.learn.cluster.k_means#
- maxframe.learn.cluster.k_means(X, n_clusters, sample_weight=None, init='k-means||', n_init=10, max_iter=300, verbose=False, tol=0.0001, random_state=None, copy_x=True, algorithm='auto', oversampling_factor=2, init_iter=5, return_n_iter=False)[源代码]#
K-means 聚类算法。
- 参数:
X (Tensor, shape (n_samples, n_features)) -- 要聚类的观测数据。需要注意的是数据将被转换为 C 顺序存储,如果给定数据不是 C 连续的,则会导致内存拷贝。
n_clusters (int) -- 要形成的聚类数,也是要生成的质心数量。
sample_weight (array-like, shape (n_samples,), optional) -- X 中每个观测值的权重。如果为 None,则所有观测值被分配相等权重(默认:None)。
init ({'k-means++', 'k-means||', 'random', or tensor, or a callable}, optional) -- 初始化方法,默认为 'k-means||':'k-means++':以一种智能的方式选择 k-means 聚类的初始聚类中心,以加快收敛速度。详见 k_init 中的 Notes 部分。'k-means||':可扩展的 k-means++。'random':从数据中随机选择 k 个观测值(行)作为初始质心。如果传入的是一个 ndarray,其形状应为 (n_clusters, n_features),并给出初始中心。如果传入的是一个可调用对象,则该对象应该接受参数 X、k 和随机状态,并返回一个初始化结果。
n_init (int, optional, default: 10) -- k-means 算法将以不同质心种子运行的次数。最终结果将是 n_init 次连续运行中惯性最小的最佳输出。
max_iter (int, optional, default 300) -- k-means 算法运行的最大迭代次数。
verbose (boolean, optional) -- 详细模式。
tol (float, optional) -- 在宣告收敛之前结果的相对增量。
random_state (int, RandomState instance or None (default)) -- 确定质心初始化的随机数生成方式。使用整数可使随机性变为确定性的。参见 Glossary。
copy_x (bool, optional) -- 在预先计算距离时,先对数据进行中心化处理会更加数值稳定。如果 copy_x 为 True(默认),则原始数据不会被修改,确保 X 是 C 连续的。如果为 False,则原始数据会被修改,并在函数返回前恢复,但通过减去并加回数据均值可能会引入微小的数值差异,在这种情况下也不能保证数据是 C 连续的,从而可能导致显著的性能下降。
algorithm ("auto", "full" or "elkan", default="auto") -- 使用的 K-means 算法。经典的 EM 风格算法是 "full"。"elkan" 变体通过使用三角不等式更为高效,但目前不支持稀疏数据。"auto" 会在密集数据时选择 "elkan",而在稀疏数据时选择 "full"。
oversampling_factor (int, default=2) -- 仅适用于 kmeans||,用于 kmeans|| 的每次迭代中。
init_iter (int, default=5) -- 仅适用于 kmeans||,表示需要多少次迭代。
return_n_iter (bool, optional) -- 是否返回迭代次数。
- 返回:
centroid (float ndarray with shape (k, n_features)) -- 在 k-means 最后一次迭代中找到的质心。
label (integer ndarray with shape (n_samples,)) -- label[i] 是第 i 个观测值最近的质心的代码或索引。
inertia (float) -- 惯性准则的最终值(训练集中所有观测值到最近质心的平方距离之和)。
best_n_iter (int) -- 与最佳结果对应的迭代次数。仅当 return_n_iter 设置为 True 时返回。