本文提醒了聚类剖析在宰割、剖析和洞察相似数据组方面具备的后劲。
机器学习不只仅触及做预测,还触及其他无监视环节,其中聚类尤为突出。本文引见了聚类和聚类剖析,着重标明了聚类剖析在宰割、剖析和洞察相似数据组方面具备的后劲。
什么是聚类?
便捷来说,聚类就是将相似的数据项分组在一同,这好比在杂货店里将相似的水果蔬菜摆放在一同。
无妨进一步论述这个概念:聚类是一种无监视学习义务,触及一系列宽泛的机器学习方法,假定数据未标志或未先验分类,旨在发现其底层的形式或洞察力。详细来说,聚类的目标是发现有相似特色或属性的数据观测组。
以下是聚类在泛滥机器学习技术中所处的
为了更好地理解聚类概念,无妨想想在超市中寻觅有相似购物行为的客户群,或许将电子商务门户网站中的少量产品分门别类,这些是触及聚类方法的实在场景的经常出现例子。
经常出现的聚类技术
数据聚类的方法有好多种,最盛行的三种方法如下:
聚类和聚类剖析一样吗?
下图标明了这两个经常混杂的术语之间的区别和相关。
实践例子
无妨如今开局关注聚类剖析,为此举一个实践的例子:
留意:本例中附带的代码,假定你相熟Python言语的基础常识和一些库,比如Sklearn(用于训练聚类模型)、Pandas(用于数据整顿)和Matplotlib(用于数据可视化)。
咱们将经常使用帕尔默群岛企鹅(数据集论述聚类剖析,该数据集含有对阿德利企鹅、巴布亚企鹅和帽带企鹅三种不同物种的数据观测。这个数据集在训练分类模型方面十分盛行,但在寻觅数据聚类方面也颇有用途。加载数据集文件后,咱们要做的就是假定“species”类属性是未知的。
import pandas as pdpenguins = pd.read_csv('penguins_size.csv').dropna()X = penguins.drop('species', axis=1)
咱们还将从数据集中删除形容企鹅性别和观测到该物种所在岛屿的两个类别特色,留下其他的数字特色。咱们还将已知的标签(species)存储在一个独自的变量y中:它们便于稍后将取得的聚类与数据集中实践的企鹅分类启动比拟。
X = X.drop(['island', 'sex'], axis=1)y = penguins.species.astype("category").cat.codes
经常使用上方几行代码,咱们就可以运用Sklearn库中可用的k-means聚类算法,在咱们的数据中找到k个聚类。咱们只有指定咱们想要找到的聚类的数量,在本文中,咱们将数据分红k=3聚类:
from sklearn.cluster import KMeanskmeans = KMeans(n_clusters = 3, n_init=100)X["cluster"] = kmeans.fit_predict(X)
上方最后一行代码存储了聚类结果,即调配给每个数据实例的聚类的id,存储在名为“cluster”的新属性中。
接上去可以生成聚类的一些可视化图来剖析和解释它们了!上方的代码片段有点长,但可以归纳为生成两个数据可视化图:第一个显示了两个数据特色(喙长culmenlength和前肢长flipper length)周围的散点图以及每个观测值所属的聚类,第二个可视化图显示了每个数据点所属的实践企鹅物种。
plt.figure (figsize=(12, 4.5))# Visualize the clusters obtained for two of the)plt.plot(X[X["cluster"]==1]["culmen_length_mm"],X[X["cluster"]==1]["flipper_length_mm"], "ro", label="Second cluster")plt.plot(X[X["cluster"]==2]["culmen_length_mm"],X[X["cluster"]==2]["flipper_length_mm"], "go", label="Third cluster")plt.plot(kmeans.cluster_centers_[:,0], kmeans.cluster_centers_[:,2], "kD",label="Cluster centroid")plt.xlabel("Culmen length (mm)", fontsize=14)plt.ylabel("Flipper length (mm)", fontsize=14)plt.legend(fontsize=10)# Compare against the actual ground-truth class labels (real penguinspecies)plt.subplot(122)plt.plot(X[y==0]["culmen_length_mm"], X[y==0]["flipper_length_mm"], "mo",label="Adelie")plt.plot(X[y==1]["culmen_length_mm"], X[y==1]["flipper_length_mm"], "ro",label="Chinstrap")plt.plot(X[y==2]["culmen_length_mm"], X[y==2]["flipper_length_mm"], "go",label="Gentoo")plt.xlabel("Culmen length (mm)", fontsize=14)plt.ylabel("Flipper length (mm)", fontsize=14)plt.legend(fontsize=12)plt.show
以下是可视化图:
经过观测这些聚类,咱们可以得出第一个论断:
这就引出了一个疑问:假设咱们尝试依据用于训练模型的任何其他两个变量可视化咱们的聚类会怎样样?
无妨可视化企鹅的体重(克)和喙长(毫米)。
plt.plot(X[X["cluster"]==0]["body_mass_g"],X[X["cluster"]==0]["culmen_length_mm"], "mo", label="First cluster")plt.plot(X[X["cluster"]==1]["body_mass_g"],X[X["cluster"]==1]["culmen_length_mm"], "ro", label="Second cluster")plt.plot(X[X["cluster"]==2]["body_mass_g"],X[X["cluster"]==2]["culmen_length_mm"], "go", label="Third cluster")plt.plot(kmeans.cluster_centers_[:,3], kmeans.cluster_centers_[:,0], "kD",label="Cluster centroid")plt.xlabel("Body mass (g)", fontsize=14)plt.ylabel("Culmen length (mm)", fontsize=14)plt.legend(fontsize=10)plt.show
这个仿佛十分清楚!如今咱们把数据分红了易于分别的三组。进一步剖析咱们的可视化图,咱们可以从中取得更多的发现:
结语
本文论述了聚类剖析的概念和实践运行,即在数据中找到有相似特色或属性的元素子组,并剖析这些子组从中失掉有价值或可操作的洞察力。从市场营销、电子商务到生态名目,聚类剖析被宽泛运行于泛滥实践畛域。
原文题目:Using Cluster Analysis to Segment Your>