当前位置: 首页 > news >正文

如何做网站链接县建设局 协会网站

如何做网站链接,县建设局 协会网站,手机论坛,广告创意设计模板📘 Python无监督学习中的聚类:K均值与层次聚类实现详解 无监督学习是一类强大的算法,能够在没有标签的数据集中发现结构与模式。聚类作为无监督学习的重要组成部分,在各类数据分析任务中广泛应用。本文将深入讲解聚类算法中的两种…

📘 Python无监督学习中的聚类:K均值与层次聚类实现详解

无监督学习是一类强大的算法,能够在没有标签的数据集中发现结构与模式。聚类作为无监督学习的重要组成部分,在各类数据分析任务中广泛应用。本文将深入讲解聚类算法中的两种常见方法:K均值聚类和层次聚类,结合Python代码详细介绍它们的实现与应用,帮助理解不同聚类方法的优劣与使用场景。

目录

  1. 🔗 聚类的核心思想与应用场景
  2. 📊 K均值聚类:快速高效的聚类方法
  3. 🔝 层次聚类:基于层次结构的灵活聚类
  4. 🆚 K均值与层次聚类的比较
  5. 🚀 实践:如何选择合适的聚类方法
  6. 🌐 拓展:结合轮廓系数评估聚类效果

1. 🔗 聚类的核心思想与应用场景

聚类是一种将数据划分为多个组(或称为簇)的技术,每个簇内的数据点具有较高的相似性,而簇间的数据点则差异较大。聚类的核心目标是寻找数据的潜在模式和结构,而不依赖于标签信息。

应用场景:

  • 市场细分:根据顾客的购买行为,将其划分为不同的细分市场,便于进行精准营销。
  • 图像分割:将图像分割为多个区域,用于图像处理与分析。
  • 异常检测:通过聚类发现异常数据点,这些数据点通常位于簇的边界之外。

2. 📊 K均值聚类:快速高效的聚类方法

K均值聚类是最常用的聚类算法之一。它通过不断迭代来将数据集分成K个簇,并使得每个簇的中心与其成员数据点之间的距离最小化。K均值算法的主要步骤包括:

  1. 随机选择K个初始中心点(即质心)。
  2. 将每个数据点分配给距离最近的质心。
  3. 重新计算每个簇的质心。
  4. 重复步骤2和3,直到质心不再发生显著变化。

📌 实现K均值聚类

在Python中,使用KMeans类可以轻松实现K均值聚类。以下代码展示了如何应用K均值对二维数据进行聚类,并可视化结果。

# 导入相关库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs# 生成示例数据
X, y = make_blobs(n_samples=300, centers=4, random_state=42, cluster_std=0.60)# 创建K均值聚类模型,设定K=4
kmeans = KMeans(n_clusters=4)# 训练模型并获取聚类标签
kmeans.fit(X)
y_kmeans = kmeans.predict(X)# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')# 可视化质心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title("K均值聚类结果")
plt.show()

🎯 K均值的特点:

  • 效率高:K均值算法的时间复杂度较低,能够在较大数据集上快速运行。
  • 易于实现:K均值算法简单直观,并且能够在多数任务中表现良好。
  • 局限性:K均值依赖于初始质心的选择,容易陷入局部最优解;此外,K的值需要预先设定,不适用于所有数据集。

代码中,使用make_blobs生成了一个包含4个簇的模拟数据集,并通过KMeans类对数据进行聚类。最终,我们使用Matplotlib可视化了聚类结果,其中红色点表示每个簇的质心。

3. 🔝 层次聚类:基于层次结构的灵活聚类

层次聚类是一种通过创建簇的嵌套层次来进行聚类的算法,分为自底向上(凝聚型)自顶向下(分裂型)两种方法。自底向上的层次聚类开始时将每个数据点视为一个单独的簇,逐渐合并相似簇,直到达到指定的簇数或某一停止条件。它能够生成一棵聚类树,称为树状图

📌 实现层次聚类

在Python中,可以使用AgglomerativeClustering类实现凝聚型层次聚类,并利用dendrogram函数可视化树状图。

# 导入相关库
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs# 生成示例数据
X, y = make_blobs(n_samples=300, centers=4, random_state=42, cluster_std=0.60)# 使用凝聚层次聚类
agg_clustering = AgglomerativeClustering(n_clusters=4)
y_agg = agg_clustering.fit_predict(X)# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_agg, cmap='viridis')
plt.title("层次聚类结果")
plt.show()# 计算层次聚类的树状图数据
linked = linkage(X, 'ward')# 绘制树状图
plt.figure(figsize=(10, 7))
dendrogram(linked, orientation='top', distance_sort='descending', show_leaf_counts=True)
plt.title("层次聚类树状图")
plt.show()

🎯 层次聚类的特点:

  • 无需预设簇数:层次聚类不需要预先设定K值,能够自动生成簇的层次结构。
  • 结果直观:树状图能够清晰展示数据的聚类层次,便于理解和分析。
  • 计算代价高:层次聚类的时间复杂度较高,在大数据集上表现不如K均值高效。

通过AgglomerativeClustering实现了层次聚类,代码中的dendrogram函数生成了对应的树状图,从图中可以清楚地看到聚类的层次结构。在实际应用中,层次聚类非常适合于数据点较少的场景,或需要对聚类结果进行深入分析的任务。

4. 🆚 K均值与层次聚类的比较

K均值和层次聚类在应用场景和算法特点上各具优势,以下是两者的比较:

特点K均值聚类层次聚类
计算复杂度低,适合大数据集高,适合小数据集
需要预设簇数是,需要预设K值否,可生成层次结构
簇的形状适用于球状簇能处理复杂的簇形
对噪声和异常点的敏感性对异常点敏感相对不敏感
结果可解释性结果较简单树状图提供丰富的解释性

在选择聚类方法时,需要考虑数据集的大小、簇的形状、计算资源以及对聚类结果的要求等因素。K均值在大规模数据上的表现优异,而层次聚类则提供了更多分析层次和解释性。

5. 🚀 实践:如何选择合适的聚类方法

选择聚类方法时,应从以下几个维度进行考量:

  1. 数据规模:K均值算法适合大规模数据集,层次聚类更适合小规模数据集。
  2. 簇的形状:如果簇的形状复杂且非球形,层次聚类往往能给出更合理的划分结果。
  3. 簇数的确定:如果聚类数未知或希望获取层次结构信息,层次聚类是更好的选择;而K均值需要预设K值。
  4. 计算资源:K均值算法在大数据集上的速度优势明显,适合资源有限的情况。

6. 🌐 拓展:结合轮廓系数评估聚类效果

为了客观评估聚类结果的质量,可以

使用轮廓系数。轮廓系数通过比较每个数据点与簇内其他点的距离与其与最近簇的距离,给出聚类效果的度量。

📌 实现轮廓系数评估

from sklearn.metrics import silhouette_score# K均值聚类模型
kmeans = KMeans(n_clusters=4)
kmeans_labels = kmeans.fit_predict(X)# 计算K均值的轮廓系数
kmeans_silhouette = silhouette_score(X, kmeans_labels)
print(f"K均值轮廓系数: {kmeans_silhouette}")# 层次聚类模型
agg_clustering = AgglomerativeClustering(n_clusters=4)
agg_labels = agg_clustering.fit_predict(X)# 计算层次聚类的轮廓系数
agg_silhouette = silhouette_score(X, agg_labels)
print(f"层次聚类轮廓系数: {agg_silhouette}")

通过计算轮廓系数,可以量化聚类的紧密程度与分离度,从而辅助选择最佳的聚类方法。

http://www.yayakq.cn/news/438402/

相关文章:

  • 哈尔滨大型网站开发网站百度优化
  • 网站制作公司运作方案WordPress用oss内网
  • 营销网站做得好的公司广州小程序设计
  • 织梦网站后台打开空白济南专业做网站公司哪家好
  • 建设企业网站的目的以及意义满洲里做网站
  • 网站开发技术的现状及发展趋势哈尔滨专业网站制作公司
  • next.js做纯静态网站注册一个公司一年费用
  • 网站的基本建设福建外贸网站建设
  • 让医院做网站的策划书微信小程序网站建设定制
  • 哪个网站论文多管理网站英文
  • 电子商务网站建设模板下载wordpress感兴趣推送
  • 崂山区城乡建设局网站淘宝放单网站开发
  • ppt模板免费下载素材网站哪些平台可以建立网站
  • 阿里OSS做网站图库费用wordpress 弹出表单
  • 那位学生网站开发网页制作模板和库教案
  • 厦门做网站排名新彊生产建设兵团网站
  • 响应式网站开发方法青岛专业做外贸网站
  • 哪个网站做简历免费帮人建网站价格
  • 东营中移动网站建设网络营销团队
  • 挣钱网站一小时两百番禺核酸检测点免费
  • 做网站填写主要品牌怎么填写网站审核备案
  • 做外贸怎么登陆外国网站动漫制作专业可以专升本考什么
  • 免费ftp服务器申请网站国外高清人像图片素材网站
  • wordpress 首页幻灯片插件没有备案网站可以做优化么
  • 个人网站建站源码如何开发微信公众平台
  • 电脑网站转换成手机网站网站开发支持多个币种
  • 吉安高端网站建设公司延安网站建设公司电话
  • 老专家个人网站2022中文无字幕入口网站
  • 网站建设设计780元全包网络服务协议
  • app做好了网站怎么做怎么制作公众号教程