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

初试无监督学习 - K均值聚类算法

文章目录

  • 1. K均值聚类算法概述
  • 2. k均值聚类算法演示
    • 2.1 准备工作
    • 2.2 生成聚类用的样本数据集
    • 2.3 初始化KMeans模型对象,并指定类别数量
    • 2.4 用样本数据训练模型
    • 2.5 用训练好的模型生成预测结果
    • 2.6 输出预测结果
    • 2.7 可视化预测结果
  • 3. 实战小结

1. K均值聚类算法概述

  • K均值聚类算法是一种迭代的、基于中心的聚类方法,将数据点划分为K个簇。算法通过随机选择初始中心点,然后迭代地分配数据点到最近的簇中心,并更新簇中心为簇内所有点的均值,直到收敛或达到最大迭代次数。它简单、高效,适用于大规模数据集。

2. k均值聚类算法演示

2.1 准备工作

下面的代码导入数据处理和绘图库,设置绘图样式为seaborn-v0_8,格式化NumPy数组输出。

在这里插入图片描述
下面两行代码是Python中使用scikit-learn库进行聚类分析的准备工作:

  1. from sklearn.cluster import KMeans:这行代码从sklearn.cluster模块中导入KMeans类。KMeans是一种常用的聚类算法,用于将数据点分组成K个簇,使得簇内的点尽可能相似,簇间的点尽可能不同。

  2. from sklearn.datasets import make_blobs:这行代码从sklearn.datasets模块中导入make_blobs函数。make_blobs用于生成人造的聚类数据集,这些数据集由若干个“blobs”组成,每个“blob”是一个高密度的数据点集合,它们在特征空间中相对独立,适合用来测试和展示聚类技术的效果。

通常,这两行代码会用在数据分析或机器学习项目的开始阶段,为聚类任务做准备。
在这里插入图片描述

  • 什么是blobs?在机器学习和数据科学领域,“blobs” 这个词通常用来描述一种特定类型的数据集,这种数据集由聚类算法生成,用于测试和展示聚类技术的效果。“Blobs” 数据集包含若干个 “blob”,每个 “blob” 是一个高密度的数据点集合,它们在特征空间中相对独立。

  • 高斯分布:每个 “blob” 通常由高斯(正态)分布生成,这意味着数据点围绕中心点呈钟形分布。

  • 分离性:不同的 “blobs” 之间相对分离,这使得它们容易被聚类算法识别和分开。

  • 维度:“Blobs” 数据集可以是二维的,用于可视化,也可以是更高维度的,用于更复杂的分析。

2.2 生成聚类用的样本数据集

在这里插入图片描述

2.3 初始化KMeans模型对象,并指定类别数量

在这里插入图片描述

2.4 用样本数据训练模型

在这里插入图片描述

2.5 用训练好的模型生成预测结果

在这里插入图片描述

2.6 输出预测结果

在这里插入图片描述

2.7 可视化预测结果

在这里插入图片描述
一旦训练了如 KMeans之类的算法,它就可以预测新样本 ( 之前未见过的样本 ) 所属的类别。假设我们在描述银行潜在债务人和实际债务人的特征数据集上训练这种算法,它可以通过生成两个类别来了解潜在债务人的信誉度,将新的潜在债务人归类为两个类别之一:​“信誉良好”与“信誉不佳”。

3. 实战小结

通过本次实战,我们深入理解并应用了K均值聚类算法,这是一种广泛应用于数据科学领域的无监督学习方法。我们首先导入了必要的库,包括数据处理的NumPy、数据分析的Pandas以及数据可视化的Matplotlib,并设置了绘图样式以提升图表美观度。接着,我们利用make_blobs函数生成了模拟数据,为聚类分析提供了基础数据集。

在初始化KMeans模型时,我们指定了类别数量,这在实际应用中需要根据数据特性和业务需求来确定。通过训练模型并生成预测结果,我们成功地将数据点划分为不同的簇。最后,通过可视化预测结果,我们直观地展示了聚类效果,进一步验证了模型的准确性。

此外,我们还探讨了"blobs"的概念,即由聚类算法生成的高密度数据点集合,它们在特征空间中的相对独立性为聚类算法提供了理想的测试环境。通过本次实战,我们不仅掌握了K均值聚类算法的实现流程,还学会了如何通过数据可视化来评估聚类效果,为解决实际问题打下了坚实基础。

http://www.lryc.cn/news/492965.html

相关文章:

  • 捉虫笔记(七)-再探谁把系统卡住了
  • 【Linux课程学习】:《简易版shell实现和原理》 《哪些命令可以让子进程执行,哪些命令让shell执行(内键命令)?为什么?》
  • 2024年11月27日Github流行趋势
  • Java中的线程池使用详解
  • Redis(概念、IO模型、多路选择算法、安装和启停)
  • 计算机网络 第4章 网络层
  • Java学习笔记--继承方法的重写介绍,重写方法的注意事项,方法重写的使用场景,super和this
  • 高级java每日一道面试题-2024年11月27日-JVM篇-JVM的永久代中会发生垃圾回收么?
  • Spring Boot教程之十: 使用 Spring Boot 实现从数据库动态下拉列表
  • 基于混合ABC和A*算法复现
  • 狂野飙车8+(Asphalt 8+) for Mac 赛车竞速游戏 安装教程
  • 网络技术-VRRP(虚拟路由冗余协议)部署介绍
  • C语言解决空瓶换水问题:高效算法与实现
  • day2全局注册
  • 鸿蒙多线程应用-taskPool
  • 【失败经验】将算法模型封装为安卓应用
  • ABAP OOALV模板
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-autobatch.py
  • SycoTec 4060 ER-S德国高精密主轴电机如何支持模具的自动化加工?
  • 部署 DeepSpeed以推理 defog/sqlcoder-70b-alpha 模型
  • Python网络爬虫基础
  • 每天五分钟机器学习:支持向量机数学基础之超平面分离定理
  • TCP/IP网络协议栈
  • 利用编程思维做题之最小堆选出最大的前10个整数
  • 详解MVC架构与三层架构以及DO、VO、DTO、BO、PO | SpringBoot基础概念
  • Unity C# 影响性能的坑点
  • 工作学习:切换git账号
  • 量化交易系统开发-实时行情自动化交易-8.量化交易服务平台(一)
  • Scala习题
  • 结构方程模型(SEM)入门到精通:lavaan VS piecewiseSEM、全局估计/局域估计;潜变量分析、复合变量分析、贝叶斯SEM在生态学领域应用