您好,欢迎访问一九零五行业门户网

Python中的聚类分析实例

聚类分析是一种常用的数据分析方法,可以将数据集划分为不同的组或类别。python 提供了多种聚类算法,我们可以根据不同的需求选择不同的算法进行分析。本文将介绍一些 python 中常用的聚类算法,并给出实例应用。
一、k-means 算法
k-means 算法是一个常用的聚类算法,根据欧几里得距离对数据进行分组。该算法将数据集分为 k 个簇,其中每个簇的中心点是簇中所有成员的均值。算法的具体步骤如下:
随机选择 k 个点作为初始的簇中心。计算所有数据点与簇中心的距离,并将每个数据点归为距离最近的簇。根据新的归类结果,重新计算每个簇的中心点。重复第 2 步和第 3 步,直到簇不再发生变化或者达到指定的迭代次数。下面是一个使用 k-means 算法进行聚类分析的 python 实例:
import numpy as npfrom sklearn.cluster import kmeansfrom sklearn.datasets import make_blobsimport matplotlib.pyplot as plt# 生成随机数据x, y = make_blobs(n_samples=300, centers=4, random_state=42)# 运行 k-means 算法kmeans = kmeans(n_clusters=4, random_state=42)y_pred = kmeans.fit_predict(x)# 绘制聚类结果plt.scatter(x[:, 0], x[:, 1], c=y_pred)plt.title("k-means clustering")plt.show()
上述代码中,使用 make_blobs 函数生成了一个包含 300 个样本点的数据集,共包含 4 个簇。然后使用 kmeans 函数进行聚类,指定簇的数量为 4,并通过 fit_predict 方法得到每个数据点的分类结果。最后使用 matplotlib 绘制聚类结果。
二、层次聚类算法
层次聚类算法是一种自底向上的聚类算法,根据数据的相似度,将数据逐步合并为更大的簇。该算法的具体步骤如下:
将每个数据点看作一个单独的簇。计算两个距离最近的簇之间的距离。将距离最近的两个簇合并为一个新簇。重复第 2 步和第 3 步,直到将所有簇合并为一个簇或者达到指定的聚类数量。下面是一个使用层次聚类算法进行聚类分析的 python 实例:
from sklearn.cluster import agglomerativeclusteringfrom sklearn.datasets import make_moonsimport matplotlib.pyplot as plt# 生成随机数据x, y = make_moons(n_samples=200, noise=0.05, random_state=42)# 运行层次聚类算法agglomerative = agglomerativeclustering(n_clusters=2)y_pred = agglomerative.fit_predict(x)# 绘制聚类结果plt.scatter(x[:, 0], x[:, 1], c=y_pred)plt.title("agglomerative clustering")plt.show()
上述代码中,使用 make_moons 函数生成了一个包含 200 个样本点的数据集,并使用 agglomerativeclustering 函数进行聚类,指定簇的数量为 2。最后使用 matplotlib 绘制聚类结果。
三、dbscan 算法
dbscan 算法是一种基于密度的聚类算法,可以根据数据集的密度将数据点分为不同的簇。算法的具体步骤如下:
随机选择一个未访问的数据点作为核心点。找出与核心点距离不超过给定半径的所有点,作为一个以该核心点为中心的密度可达区域。如果一个点在另一个核心点的密度可达区域内,则将其和该核心点合并为一个簇。重复第 1 步到第 3 步,直到没有新的核心点被访问。下面是一个使用 dbscan 算法进行聚类分析的 python 实例:
from sklearn.cluster import dbscanfrom sklearn.datasets import make_moonsimport matplotlib.pyplot as plt# 生成随机数据x, y = make_moons(n_samples=200, noise=0.05, random_state=42)# 运行 dbscan 算法dbscan = dbscan(eps=0.2, min_samples=5)y_pred = dbscan.fit_predict(x)# 绘制聚类结果plt.scatter(x[:, 0], x[:, 1], c=y_pred)plt.title("dbscan clustering")plt.show()
上述代码中,使用 make_moons 函数生成了一个包含 200 个样本点的数据集,并使用 dbscan 函数进行聚类,指定了半径和最小样本数的阈值。最后使用 matplotlib 绘制聚类结果。
总结
本文介绍了 python 中的三种常用聚类算法,并给出了相应的实例应用。聚类算法是一种十分有用的数据分析方法,可以帮助我们发现数据中的隐藏模式和关系。在实际应用中,我们可以根据数据的特点和需求选择不同的算法进行分析。
以上就是python中的聚类分析实例的详细内容。
其它类似信息

推荐信息