当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cuml.KMeans用法及代码示例


用法:

class cuml.KMeans(*, handle=None, n_clusters=8, max_iter=300, tol=0.0001, verbose=False, random_state=1, init='scalable-k-means++', n_init=1, oversampling_factor=2.0, max_samples_per_batch=32768, output_type=None)

KMeans 是一种基本但函数强大的聚类方法,通过期望最大化进行了优化。它随机选择 X 中的 K 个数据点,并计算哪些样本接近这些点。对于每个点簇,都会计算一个平均值(因此得名),这成为新的质心。

CUML的keans期望array-like对象或cudfDataFrame并支持可缩放的浏览量++初始化方法。该方法比随机选择k点更稳定。

参数

handlecuml.Handle

指定 cuml.handle 保存用于此模型中计算的内部 CUDA 状态。最重要的是,这指定了将用于模型计算的 CUDA 流,因此用户可以通过在多个流中创建句柄在不同的流中同时运行不同的模型。如果为 None,则创建一个新的。

n_clustersint(默认值 = 8)

您想要的质心或集群的数量。

max_iterint(默认值 = 300)

EM 的迭代次数越多,精度越高,但速度越慢。

tolfloat64(默认 = 1e-4)

质心平均值变化不大时的停止标准。

verboseint 或布尔值,默认=False

设置日志记录级别。它必须是 cuml.common.logger.level_* 之一。有关详细信息,请参阅详细级别。

random_stateint(默认值 = 1)

如果您希望重新启动 Python 时结果相同,请选择一个状态。

init‘scalable-kmeans++’、‘k-means||’、‘random’ 或 ndarray(默认 = ‘scalable-k-means++’)#noqa

‘scalable-k-means++’或‘k-means||’:使用快速稳定的可扩展kmeans++初始化。 ‘random’:从初始质心的数据中随机选择 ‘n_cluster’ 观测值(行)。如果传递了一个 ndarray,它的形状应该是 (n_clusters, n_features) 并给出初始中心。

n_init: int (default = 1)

k-means 算法将使用不同种子调用的实例数。最终结果将来自 n_init 实例中产生最低惯性的实例。

oversampling_factorfloat64(默认 = 2.0)

在可扩展的k-means++ 初始化中为潜在质心采样的点数。增加此值可以以内存为代价获得更好的初始质心。在可扩展的k-means++ 中采样的质心总数为oversampling_factor * n_clusters * 8。

max_samples_per_batchint(默认值 = 32768)

用于成对距离计算批次的数据样本数。该计算在两个拟合预测中完成。默认值应该适合大多数情况。批量成对距离计算中的元素总数为max_samples_per_batch * n_clusters。当 n_clusters 变得非常大时,可能有必要降低此数字。

output_type{‘input’, ‘cudf’, ‘cupy’, ‘numpy’, ‘numba’},默认=无

用于控制估计器的结果和属性的输出类型的变量。如果为 None,它将继承在模块级别设置的输出类型 cuml.global_settings.output_type 。有关详细信息,请参阅输出数据类型配置。

注意

KMeans 需要指定 n_clusters。这意味着需要大致猜测或知道一个数据集有多少个集群。如果不确定,可以从少量集群开始,并使用 PCA、UMAP 或T-SNE 可视化生成的集群,并验证它们看起来是否合适。

KMeans 的应用

KMeans 的最大优势是它的速度和简单性。这就是为什么 KMeans 是许多从业者聚类算法的首选。 KMeans 已广泛用于聚类数量大致已知的情况,例如大数据聚类任务、图像分割和医学聚类。

有关其他文档,请参阅 scikitlearn’s Kmeans

例子

# Both import methods supported
from cuml import KMeans
from cuml.cluster import KMeans

import cudf
import numpy as np
import pandas as pd

def np2cudf(df):
    # convert numpy array to cuDF dataframe
    df = pd.DataFrame({'fea%d'%i:df[:,i] for i in range(df.shape[1])})
    pdf = cudf.DataFrame()
    for c,column in enumerate(df):
      pdf[str(c)] = df[column]
    return pdf

a = np.asarray([[1.0, 1.0], [1.0, 2.0], [3.0, 2.0], [4.0, 3.0]],
               dtype=np.float32)
b = np2cudf(a)
print("input:")
print(b)

print("Calling fit")
kmeans_float = KMeans(n_clusters=2)
kmeans_float.fit(b)

print("labels:")
print(kmeans_float.labels_)
print("cluster_centers:")
print(kmeans_float.cluster_centers_)

输出:

input:

     0    1
 0  1.0  1.0
 1  1.0  2.0
 2  3.0  2.0
 3  4.0  3.0

Calling fit

labels:

   0    0
   1    0
   2    1
   3    1

cluster_centers:

   0    1
0  1.0  1.5
1  3.5  2.5

属性

cluster_centers_数组

最终集群的坐标。这表示每个数据集群的“mean”。

labels_数组

每个数据点属于哪个集群。

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuml.KMeans。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。