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

server/2024/11/26 23:26:59/

文章目录

  • 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.ppmy.cn/server/145176.html

相关文章

Python 数据分析核心库大全!

(欢迎关注我的视频号) 👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。 大家好!我是菜鸟哥! 今天我们来聊点干货:Python 数据…

算法日记 33 day 动态规划(打家劫舍,股票买卖)

今天来看看动态规划的打家劫舍和买卖股票的问题。 上题目!!!! 题目:打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金…

高标准农田智慧农业系统建设方案

1 项目概述 1.1 建设背景 我国是农业大国,近30年来农田高产量主要依靠农药化肥的大量投入,大部分化肥和水资源没有被有效利用而随地弃置,导致大量养分损失并造成环境污染。我国农业生产仍然以传统生产模式为主,传统耕种只能凭经验施肥灌溉,不仅浪费大量的人力物力,也对环…

僵尸毁灭工程 服务搭建 联机教程 无需公网IP、服务器

主要内容 什么是僵尸毁灭工程 搭建该服务,需要准备什么 详细步骤 1.下载并运行 SteamCMD 2.下载僵尸毁灭服务端 3.运行 MoleSDN 进行异地联机 4.小伙伴皮蛋加入鼠鼠服务器 完成联机 什么是僵尸毁灭工程 一款由The Indie Stone开发的开放世界生存模拟游戏。游…

WPF中如何让Textbox显示为一条直线

由于Textbox直接使用是一条直线 设置如下代码 可以让Textbox变为直线输入 <Style TargetType"TextBox"x:Key"UsernameTextBoxStyle"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"{x:Typ…

C# .net core web 程序远程调试

如果有两个同一个web的程序池&#xff0c;附加进程的时候就有两个选择。

【Vue】 npm install amap-js-api-loader指南

前言 项目中的地图模块突然打不开了 正文 版本太低了&#xff0c;而且Vue项目就应该正经走项目流程啊喂&#xff01; npm i amap/amap-jsapi-loader --save 官方说这样执行完&#xff0c;就这结束啦&#xff01;它结束了&#xff0c;我还没有&#xff0c;不然不可能记录这篇文…

node.js fluent-ffmpeg 桌面推流

1&#xff0c;安装fluent-ffmpeg&#xff0c;npm install fluent-ffmpeg 2&#xff0c;推流代码&#xff1a; //stream.js const ffmpeg require(fluent-ffmpeg); const rtmpUrl "rtmp://localhost:1935/live/desktop"; //ffmpeg -f gdigrab -i desktop -vcode…