【Sklearn-驯化】一文分析教你如何使用k-means进行数据聚类

news2024/11/16 12:02:20

【Sklearn-驯化】一文分析教你如何使用k-means进行数据聚类

 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。


文章目录

    • 🎯 1. 基本介绍
    • 💡 2. 公式推导
    • 🔍 3. 代码实践
      • 3.1 数据准备
      • 3.2 模型训练过程
      • 3.2 可视化聚类结果
    • 🔍 4. 注意事项
    • 🔍 5. 总结

🎯 1. 基本介绍

  K-Means是一种流行的聚类算法,用于将数据点划分为K个簇。它通过最小化簇内数据点与簇中心的距离来进行聚类,目的是使得簇内的点尽可能相似,簇间的点尽可能不同。

💡 2. 公式推导

  K-Means算法的目标函数是最小化每个数据点到其簇中心的距离的平方和,称为簇内平方和(Within-Cluster Sum of Squares, WCSS):
J = ∑ i = 1 k ∑ x 属于 s i ∣ ∣ x − u i ∣ ∣ 2 J=\sum_{i=1}^{k}\sum_{x属于s_i}||x-u_i||^2 J=i=1kx属于si∣∣xui2

  其中:

k 是簇的数量。
S_i 是第 i 个簇中的所有点的集合。
μ_i 是簇 i 的中心点(即该簇所有点的均值)。
||x - μ_i|| 是点 x 到簇中心 μ_i 的欧氏距离。

🔍 3. 代码实践

  为了更加清晰的了解kmeans算法的运行过程,我们通过sklearn中的database包来创建相关的数据,具体的流程如下所示:

3.1 数据准备

  具体的数据准备如下所示:

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# 生成模拟数据
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

3.2 模型训练过程

  我们对上述的数据进行模型的训练和预测,具体的代码如下所示:

# 创建KMeans对象
kmeans = KMeans(n_clusters=4)

# 训练模型
kmeans.fit(X)
# 聚类标签
predicted_labels = kmeans.labels_
# 计算轮廓系数
silhouette_avg = silhouette_score(X, predicted_labels)

print(f"轮廓系数: {silhouette_avg:.2f}")

3.2 可视化聚类结果

  为了更加清晰的看出聚类的效果,我们将聚类的结果进行可视化,具体的代码如下所示:

import matplotlib.pyplot as plt

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap='viridis', marker='o')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.show()

🔍 4. 注意事项

  • K-Means算法对初始簇中心的选择敏感,可能会导致局部最优解。可以使用n_init参数多次初始化来提高找到全局最优解的概率。
  • K-Means假设簇是凸形的、相似大小的,并且簇内是球形的。如果数据不满足这些假设,聚类效果可能不佳。
  • 选择合适的簇数量k是关键。可以使用肘部法则(Elbow Method)或轮廓系数来辅助决定。

🔍 5. 总结

  K-Means是一种简单而有效的聚类算法,广泛应用于数据探索和分析。scikit-learn提供了易于使用的K-Means实现。通过本博客的代码示例,我们学习了如何创建K-Means模型,进行训练、聚类标签分配和评估。希望这篇博客能够帮助你更好地理解K-Means模型,并将其应用于实际的聚类任务中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1884954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业读码器与商用扫码器的区别

条码二维码在数字信息化应用越来越广泛,扫码器成为了数据收集和处理的重要工具,无论是工厂生产和物流包裹朔源追踪,还是商场超市扫码收银和餐饮娱乐等场景,均能看到扫码器的辅助,市场上的扫码器种类繁多,在…

深入解析:Java爬虫的本质是什么?

深入解析:Java爬虫的本质是什么? 引言: 随着互联网的快速发展,获取网络数据已成为许多应用场景中的重要需求。而爬虫作为一种自动化程序,能够模拟人类浏览器的行为,从网页中提取所需信息,成为了…

生物墨水的重要特性

生物打印技术正以前所未有的速度发展,为组织工程和再生医学领域带来了革命性的变革。然而,成功打印出功能性的三维结构,并将其应用于人体,离不开生物墨水这一关键材料。主要特性包括: 物理性质 表面张力: 表面张力影…

安科瑞新能源系统光储充能量监控管理

一、组网拓扑 安科瑞企业微电网能量管理系统Acrel-2000MG,是安科瑞根据新型电力系统下微电网监控系统与微电网能量管理系统的要求,总结国内外的研究和生产的先进经验,专门研制出的企业微电网能量管理系统。本系统满足光伏系统、风力发电、储…

微信小程序渲染层与逻辑层交互原理

1. 网页开发与小程序开发有何不同? 2. 小程序运行环境 3. 页面渲染技术选型 1. 纯客户端技术; 2. 纯Web技术; 3. 用客户端原生技术与Web技术结合的混合技术(Hybrid),小程序就是使用的这种技术&#xff1…

试用笔记之-Delphi 7 发送阿里云短信源代码

Delphi 7 发送阿里云短信源代码 首先下载: http://www.htsoft.com.cn/download/Delphi7_AlliSms_Demo.rar 解压后,可以看到Delphi7的源代码 我们直接运行Alisms_delphi7.exe,出现下图界面,我们输入阿里云帐号和密码&#xff0c…

Langchain-Chatchat本地部署记录,三分钟学会!

1.前言: 最近AI爆发式的火,忆往昔尤记得16,17那会移动互联网是特别火热的,也造富了一批公司和个人,出来了很多精妙的app应用。现在轮到AI发力了,想想自己也应该参与到这场时代的浪潮之中,所以就找了开源的…

四川蔚澜时代电子商务有限公司打造抖音电商服务新高地

在数字化浪潮汹涌澎湃的今天,电商行业以其独特的魅力和强大的市场潜力,成为了推动经济增长的新引擎。四川蔚澜时代电子商务有限公司,作为这个领域的佼佼者,正以其专业的服务、创新的理念和卓越的实力,引领抖音电商服务…

RK3568驱动指南|第十五篇 I2C-第168章 I2C通信时序介绍

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

MySQL之应用层优化(二)

应用层优化 Web服务器问题 寻找最优并发度 每个Web服务器都有一个最佳并发度——就是说,让进程处理请求尽可能快,并且不超过系统负载的最优的并发连接数。这就是前面说的最大系统容量。进行一个简单的测量和建模,或者只是反复试验&#xf…

SpringBoot创建一个初始化项目

提示:这一篇文章,主要是为了之后可以快速的去搭建项目,当然这篇博客,作者也会根据以后学习到的东西,慢慢去整理 文章目录 前言 搭建一个SpringBoot项目,目的是为了快速开发项目 项目列表 响应枚举类 /***…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 7月2日,星期二

每天一分钟,知晓天下事! 2024年7月2日 星期二 农历五月廿七 1、 中指研究院:业主“以价换量”促交易特征明显,6月百城二手住宅价格继续下行。 2、 多家银行宣布!停止手机银行ATM扫码取款服务,“安全”成为…

本地文本向量模型的部署提供兼容openai的接口

前言 之前部署了fastgpt官方文档的一个,提供的一个m3e-large的向量模型打包的docker镜像,虽然使用起来整体效果还可以,但是有些文本向量相似度匹配的结果还是不太满意的,目前,网络上层出不穷的带推理文本向量,想体验一下,于是我基于modelscope库封装了一个兼容open ai的…

11集在Docker上编译tensorFlow Lite MCU例子工程-《MCU嵌入式AI开发笔记》

【11集在Docker上编译tensorFlow Lite MCU例子工程-《MCU嵌入式AI开发笔记》】 这一集咱们一步一步的在doc下面编译TensorFlow Lite的例程 https://tensorflow.google.cn/lite/tutorials?hlzh-cn 进入这个例子: https://codelabs.developers.google.cn/codelabs/…

Hi3861 OpenHarmony嵌入式应用入门--wifi sta

鸿蒙WiFi STA模式相关的API接口文件路径 foundation/communication/interfaces/kits/wifi_lite/wifiservice/wifi_device.h 所使用的API接口有: API 接口说明 WifiErrorCode EnableWifi(void); 开启STA WifiErrorCode DisableWifi(void); 关闭STA int IsWif…

20240701给NanoPi R6C开发板编译友善之臂的Android12系统

20240701给NanoPi R6C开发板编译友善之臂的Android12系统 2024/7/1 14:19 本文采取这个模式编译:11.6.3 编译Android Tablet版本(首次编译) echo "ROCKCHIP_DEVICE_DIR : device/rockchip/rk3588/nanopi6" > .rockchip_device.mk # export INSTALL_GAP…

LangChain 开发智能Agent,你学会了吗?

Prompt Enginnering 是打开LLM宝库的一把金钥匙,如果prompt得法,并能将其技巧与某项工作深度结合,那必将大大增效。今天我们来聊聊如何优化Prompt设计、Prompt Template管理等技术和体力活,并赋能老喻干货店的营销活动。 LLM Pro…

ollama open-webui安装后报错401

查看日志 docker logs open-webui "GET /ollama/api/tags HTTP/1.1" 500 Internal Server Error "GET /ollama/api/version HTTP/1.1" 500 Internal Server Error "GET /openai/api/models HTTP/1.1" 401 Unauthorized 浏览器console报错

提升ChatGLM效能:仅需简单模型调整

本文作者: 赵桢、罗成、李亭骞、邹文艺 引言 自大语言模型 (LLM) 成为热点话题以来,涌现了一大批中文大语言模型并在优化平台中得到了积极部署。ChatGLM 正是广受好评的主流中文大语言模型之一。 然而,由于 ChatGLM 模型尚未成为 Transfo…

Echarts 问题集锦

最近公司集中做统计图表,新手小白,真被Echarts折腾地不轻,怕自己年老记忆衰退,特地做一些记录。以备后面查阅。 1、X轴的 数据显示不全,间或不显示 很奇葩,我发现数据里有一个值为0.0,当这条记…