K-Means算法详解与实战应用.

news2024/11/26 12:24:36

在数据分析的众多工具中,K-Means聚类算法以其简单、直观和高效的特点,成为了探索数据集结构的常用方法。本文将带你深入了解K-Means算法的原理,并展示如何在实际项目中运用这一强大的聚类工具。

一 算法原理

K-Means是一种迭代聚类算法,其目标是将n个点划分为K个聚类,每个点属于最近的聚类中心的聚类。。K-means算法实现步骤如下:

输入:数据集$D = { {x_1},{x_2}, \cdots ,{x_n}} ,聚类个数 ,聚类个数 ,聚类个数k$
输出:聚类结果类簇

  1. **初始化:**随机初始化 k k k个样本作为聚类中心 { μ 1 , μ 2 , ⋯   , μ k } \{ {\mu _1},{\mu _2}, \cdots ,{\mu_k}\} {μ1,μ2,,μk}

  2. **分配:**计算数据集中所有样本 x i x_i xi到各个聚类中心 μ j \mu_j μj的距离 d i s t ( x i , μ j ) dist({x_i},{\mu _j}) dist(xi,μj),并将 x i x_i xi划分到距离最小的聚类中心所在类簇中;

  3. 更新:对于每一个类簇,更新其聚类中心: μ i = 1 ∣ c i ∣ ∑ x ∈ c i x {\mu _i} = \frac{1}{{|{c_i}|}}\sum\limits_{x \in {c_i}} x μi=ci1xcix

  4. 迭代:重复2,3步骤,直到聚类中心不再有明显变化或满足迭代次数。

总结而言,K-means算法整个流程可总结为一个优化问题,通过不断迭代使得目标函数收敛,K-means算法目标函数为:
J = ∑ j = 1 k ∑ i = 1 n d i s t ( x i , μ j ) J = \sum\nolimits_{j = 1}^k {\sum\nolimits_{i = 1}^n {dist({x_i},{\mu _j})} } J=j=1ki=1ndist(xi,μj)
从目标函数中可以看出,有两个因素对聚类结果有着至关重要的影响: k k k值、距离度量方式。

对于距离度量方式,请查看往期文章:机器学习中的聚类艺术:探索数据的隐秘之美

对于k值,常采用肘部法则

二 实战演练:使用Python实现K均值聚类

为了让大家更好地理解K均值算法的实际应用,我们将通过一个简单的Python代码示例来演示整个过程。这里我们使用Scikit-Learn这个强大的机器学习库。

  1. 安装必要的库

    pip install numpy matplotlib scikit-learn
    
  2. 导入库并生成模拟数据

    import numpy as np
    from sklearn.cluster import KMeans
    from sklearn.datasets import make_blobs
    import matplotlib.pyplot as plt
    
    # 生成模拟数据
    X, _ = make_blobs(n_samples=300, centers=4, random_state=0, cluster_std=0.6)
    
  3. 执行K均值聚类

    kmeans = KMeans(n_clusters=4)
    kmeans.fit(X)
    y_kmeans = kmeans.predict(X)
    
  4. 可视化结果

    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.show()
    

三 K均值算法的优点与局限

优点:

  • 算法简单易实现。
  • 运行速度快,适合大规模数据集。
  • 可以处理多维数据。

局限:

  • 需要预先指定簇的数量K,这在实际问题中并不总是可行。
  • 对异常值敏感,可能会导致质心偏离。
  • 假设簇是凸形的,对于复杂形状的簇效果不佳。

在这里插入图片描述

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

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

相关文章

共享旅游卡,客户旅游云南,真实反馈,全程无删减!

​这是团队伙伴袁总的客户,也是袁总的朋友,使用千益畅行旅游卡,亲身带家人去旅游云南后体验反馈。 从抗拒旅游卡,报付费团旅游,到了解旅游卡,使用旅游卡去体验,中途的担忧顾虑,到结…

计算机网络(五) —— 自定义协议简单网络程序

目录 一,关于“协议” 1.1 结构化数据 1.2 序列化和反序列化 二,网络版计算器实现准备 2.1 套用旧头文件 2.2 封装sock API 三,自定义协议 3.1 关于自定义协议 3.2 实现序列化和反序列化 3.3 测试 三,服务器实现 3.1…

【C++ 面试题】构造函数和析构函数你了解多少呢?

文章目录 1. 什么是构造函数和析构函数2. 构造函数和析构函数可以是虚函数吗3. 构造函数有哪几种4. 深拷贝和浅拷贝的区别 1. 什么是构造函数和析构函数 🐧 构造函数: 构造函数是在创建对象时自动调用的特殊成员函数。 目的:初始化对象的成…

【Redis】主从复制 - 源码

因为主从复制的过程很复杂, 同时核心逻辑主要集中在 replication.c 这个文件中, 避免篇幅过大, 所以将主从复制中涉及这个文件的代码集中到了另一篇文章。 在当前文章主要分析主从复制的大体代码逻辑, 如果需要了解整体的过程, 可以配合 Redis 主从复制 - relication 源码分析 …

中非合作打开非洲14亿人的市场新空间,非洲电商平台有哪些?

中非合作论坛自2000年成立以来,中非贸易额从105亿美元增至2821亿美元,增长近26倍。中国对非投资也从4亿多美元增长至400多亿美元,增幅超过100倍。此次中非合作论坛开幕式上,中国更是宣布未来将为非洲提供约500亿美元的融资&#x…

水库大坝安全监测方案,双重守护,安全无忧

水库作为重要的水利设施,在防洪、灌溉及供水等方面发挥着重要作用。然而随着时间的推移,大坝面临着自然老化、设计标准不足及极端天气等多重挑战,其安全性与稳定性日益受到关注。水库堤坝险情导致的洪涝灾害给人民生命财产和经济社会发展带来…

运动耳机选哪种好用?六条绝妙选购要点避免踩坑

​开放式耳机目前非常流行,它们的设计不侵入耳道,长时间佩戴也不会感到不适,同时还能维护耳部卫生,这使得它们特别受到运动爱好者和耳机发烧友的喜爱。然而,市场上的开放式耳机品牌众多,质量参差不齐&#…

乡村振兴/乡村风貌 乡村建设改造方案设计

[若愚文化STUDIO] 乡村振兴/乡村建设/风貌改造/产业策划 深度参与GD省“百千万”工程, 助力乡村建设。 根据现状实景,充分保留主体建筑物,快速出改造意向图。

vue的学习之路(Vue中组件(component )

注意:其中添加div的意义就是让template标签有一个根标签 ,否则只展示“欢迎进入登录程序” 不加div效果图 (2)两种开发方式 第一种开发方式 //局部组件登录模板声明 let login { //具体局部组件名称 template:‘ 用户登录 ’…

网络安全工程师能赚多少钱一个月?

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 网络安全工程师的月薪取决于多种因素,包括他们的经验、技能、学历、所在地区和行业的需求等。因此,很难给出一个确切的数字作为所有网络安…

STM32的GPIO使用

一、使用流程 1.使用RCC开启GPIO时钟 2.使用GPIO_Init 函数初始化GPIO 3.使用输出或输入函数控制GPIO口 二、RCC的常用函数 函数内容可通过这两个文件进行查看: RCC常用函数如下: void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalS…

掌握Python自动化:探索keymousego库的无限可能!

文章目录 掌握Python自动化:探索keymousego库的无限可能!背景:为什么选择keymousego?简介:keymousego是什么?安装指南:如何安装keymousego?快速入门:5个简单函数的使用实…

Java中校验导入字段长度与数据库字段长度一致性

需求:使用EasyExcel导入数据时,根据数据库字段长度校验导入字段的长度。使用的数据库是mysql。若是一般的校验需求, Spring Validation 或 Hibernate Validator 即可满足。 实现步骤: 获取需要校验的表,查询出字段相…

【JAVA基础】实现Tomcat基本功能

文章目录 TCP/IP协议Socket编程ServletTomcat 在搜索了两三天之后,也是大概弄懂了Tomcat是个什么东西,我们在说Tomcat之前,先来了解一下下面这三个东西: TCP/IP协议 TCP/IP 是互联网通信的基础协议。TCP(传输控制协议…

C++类和对象3

一.初始化列表 我们之前的构造函数都是在函数体内对数据成员进行赋值 Date(int year, int month, int day) {_year year;_month month;_day day; } 然而我们的构造函数还有另一种初始化的方式:初始化列表 ——初始化列表是以参数表后冒号开始,用数…

数学建模笔记—— 多目标规划

数学建模笔记—— 多目标规划 多目标规划1. 模型原理1.1 多目标规划的一般形式1.2 多目标规划的解1.3 多目标规划的求解 2. 典型例题3. matlab代码实现 多目标规划 多目标规划是数学规划的一个分支。研究多于一个的目标函数在给定区域上的最优化。又称多目标最优化。通常记为 …

VCS(Video Cloud Storage)解决方案研究报告

1.背景 控视频是重要的数据资产和证据链,在银行、交通、司法等行业对视频数据有很高的安全等级。随着监控的重要性不断提升,在能源、电力、校园、厂矿、高星酒店等多场景中对监控存储也有更高要求,体现为海量存储、超长时间和数据安全。为了充…

得物APP助力释放首发经济新活力,解锁年轻潮流密码

在消费升级与高质量发展的时代背景下,我国首发经济正以前所未有的活力蓬勃发展,成为推动市场繁荣、满足个性化消费需求的重要力量。首发,即产品首次在市场亮相,往往代表着最新的设计理念、最尖端的科技应用以及最前沿的潮流趋势。…

C++入门知识(1)

一、namespace 1、用处 可以解决程序里面定义重名变量的问题 namespace是一个命名空间。 定义变量可以在4个域下面定义,全局域,局部域,命名空间域,类域。各个域之间是相互不影响的。命名空间里面的变量可以和外面的变量重名 2…

Stable Diffusion4.9一键安装教程SD(AI绘画软件)

**无套路!**文末提供下载方式 Stable Diffusion 是一款革命性的 AI 绘画生成工具,它通过潜在空间扩散模型,将图像生成过程转化为一个逐步去噪的“扩散”过程。 与传统的高维图像空间操作不同,Stable Diffusion 首先将图像压缩到…