logo

聚类算法实践:DBSCAN、层次聚类与K-means

作者:狼烟四起2024.02.17 19:34浏览量:104

简介:在数据挖掘和机器学习中,聚类是一种重要的无监督学习方法,用于将数据集中的对象分组,使得同一组(即簇)内的对象尽可能相似,而不同组之间的对象尽可能不同。本文将简要介绍三种常见的聚类算法:DBSCAN、层次聚类和K-means,并通过示例代码演示其实现。

聚类算法是数据挖掘机器学习领域的重要工具,用于将数据集中的对象分组,使得同一组内的对象尽可能相似,而不同组之间的对象尽可能不同。在实践中,聚类算法广泛应用于许多领域,如市场细分、客户分类、异常检测等。

下面我们将简要介绍三种常见的聚类算法:DBSCAN、层次聚类和K-means,并通过示例代码演示其实现。

1. DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

DBSCAN是一种基于密度的聚类算法,能够识别并处理任何形状的簇,同时将噪声点作为单独的簇处理。该算法通过检查每个点的邻域来工作,将密度足够高的区域划分为簇,并将密度不足的区域视为噪声。

下面是一个使用Python的scikit-learn库实现DBSCAN的示例代码:

  1. from sklearn.cluster import DBSCAN
  2. from sklearn.datasets import make_moons
  3. import matplotlib.pyplot as plt
  4. # 生成半月形数据集
  5. X, y = make_moons(n_samples=200, noise=0.05, random_state=0)
  6. # 创建DBSCAN实例并拟合数据
  7. dbscan = DBSCAN(eps=0.3, min_samples=5)
  8. dbscan.fit(X)
  9. # 获取聚类标签
  10. labels = dbscan.labels_
  11. # 绘制结果
  12. plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
  13. plt.show()

在上面的代码中,我们首先使用make_moons函数生成一个半月形数据集。然后创建一个DBSCAN实例,设置epsmin_samples参数来控制邻域的大小和密度阈值。接着使用fit方法拟合数据,并使用labels_属性获取每个样本的聚类标签。最后,我们使用散点图将聚类结果可视化。

2. 层次聚类(Hierarchical Clustering)

层次聚类是一种基于距离的聚类算法,通过不断地将最近的簇合并来构建聚类层次结构。层次聚类能够识别不同形状和大小的簇,并且能够处理大规模数据集。

下面是一个使用Python的scikit-learn库实现层次聚类的示例代码:

  1. from sklearn.cluster import AgglomerativeClustering
  2. from sklearn.datasets import make_blobs
  3. import matplotlib.pyplot as plt
  4. # 生成随机数据集
  5. X, y = make_blobs(n_samples=300, random_state=0)
  6. # 创建层次聚类实例并拟合数据
  7. clustering = AgglomerativeClustering(n_clusters=3)
  8. clustering.fit(X)
  9. # 获取聚类标签
  10. labels = clustering.labels_
  11. # 绘制结果
  12. plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
  13. plt.show()

在上面的代码中,我们首先使用make_blobs函数生成一个随机数据集。然后创建一个层次聚类的实例,并设置要形成的簇的数量。接着使用fit方法拟合数据,并使用labels_属性获取每个样本的聚类标签。最后,我们使用散点图将聚类结果可视化。

相关文章推荐

发表评论