第 18 章 聚类 聚类
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
聚类是一种无监督的机器学习技术,用于将一个群体划分为不同的群组。之所以说它是无监督的,是因为我们没有给模型任何标签;它只是检查特征,并确定哪些样本是相似的,属于一个聚类。在本章中,我们将介绍 K 均值聚类和分层聚类方法。我们还将使用各种技术再次探索泰坦尼克号数据集。
K-means
K-means 算法要求用户选择聚类的数量或 "k"。然后,它随机选择 k 个中心点,并根据与中心点的距离度量将每个样本分配到一个聚类中。分配完成后,它会根据分配给标签的每个样本的中心点重新计算中心点。然后,它会根据新的中心点重复将样本分配到聚类中。经过几次迭代器应该会收敛。
由于聚类使用距离度量来确定哪些样本是相似的,因此其行为可能会根据数据的规模而发生变化。你可以将数据标准化,将所有特征放在同一比例尺上。有些人认为,如果标度暗示某些特征更重要,中小型企业可能会建议不要标准化。在本例中,我们将对数据进行标准化处理。
在本例中,我们将对泰坦尼克号乘客进行聚类。我们将从两个聚类开始,看看聚类是否能区分存活率(我们不会将存活率数据泄露到聚类中,并且只会使用X ,而不是y )。
无监督算法有.fit 方法和.predict 方法。我们只将X 传入.fit :
>>>fromsklearn.clusterimportKMeans>>>X_std=preprocessing.StandardScaler().fit_transform(...X...)>>>km=KMeans(2,random_state=42)>>>km.fit(X_std)KMeans(algorithm='auto', copy_x=True,init='k-means', max_iter=300,n_clusters=2, n_init=10, n_jobs=1,precompute_distances='auto',random_state=42, tol=0.0001, verbose=0)
模型训练完成后,我们可以调用.predict 方法将新样本分配到聚类中:
>>>X_km=km.predict(X)>>>X_kmarray([1, 1, 1, ..., 1, 1, 1], dtype=int32)
实例参数:
n_clusters=8-
要创建的聚类数量。
init='kmeans++'-
初始化方法。
n_init=10-
使用不同中心点运行算法的次数。得分最高者获胜。
max_iter=300-
运行的迭代器次数。
tol=0.0001-
收敛前的容差。
precompute_distances='auto'-
预计算距离(占用更多内存,但速度更快)。如果
n_samples*n_clusters小于或等于 1200 万,auto将进行预计算。 verbose=0-
随机种子。
random_state=None-
随机种子。
copy_x=True-
计算前复制数据。
n_jobs=1-
使用的 CPU 数量。
algorithm='auto'-
K-means 算法。
'full'适用于稀疏数据,但'elkan'效率更高。'auto'使用'elkan'处理密集数据。
属性:
cluster_centers_-
中心坐标
labels_ ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access