热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

k均值算法有哪些不足之处_K均值聚类算法(KMeans)

K-means是一种无监督学习,对未标记的数据(即没有定义类别或组的数据)进行分类。该算法的目标是在数据中找到由变量K标记的组。该算法迭代

K-means是一种无监督学习,对未标记的数据(即没有定义类别或组的数据)进行分类。 该算法的目标是在数据中找到由变量K标记的组。该算法迭代地工作基于所提供的特征,将每个数据点分配给K个组中的一个。 基于特征相似性对数据点进行聚类。 K均值聚类算法的结果是:

1.K簇的质心,可用于标记新数据

2.训练数据的标签(每个数据点分配给一个集群)

一、k-means简述

1、聚类

“类”指的是具有相似性的集合,聚类是指将数据集划分为若干类,使得各个类之内的数据最为相似,而各个类之间的数据相似度差别尽可能的大。对数据集进行聚类划分,属于无监督学习。聚类分析就是以相似性为基础,在一个聚类中的模式之间比不在同一个聚类中的模式之间具有更多的相似性。

2、K-Means

对样本集D = {x1,x2,…,xm}.K-Means算法就是针对聚类划分C = {C1,C2,…,Ck}最小化平方误差;

f995c572bb7b3ce13a0125ccaf83ef21.png

其中

30ce67b5a83f41533cd2e1df20082d10.png

是是簇Ci的均值向量。从上述公式中可以看出,该公式刻画了簇内样本围绕簇均值向量的紧密程度,E值越小簇内样本的相似度越高。

结合最小二乘法和拉格朗日原理,聚类中心为对应类别中各数据点的平均值,同时为了使算法收敛,在迭代的过程中,应使得最终的聚类中心尽可能的不变。

三、工作流程

随机选取K个样本作为聚类中心;

计算各样本与各个聚类中心的距离;

将各样本回归于与之距离最近的聚类中心;

求各个类的样本的均值,作为新的聚类中心;

判定:若类中心不再发生变动或者达到迭代次数,算法结束,否则回到第二步。

四、k-means算法的描述如下

当任意一个点的簇分配结果发生改变时,对数据集中的每个点,对每个质心,计算质心与数据点之间的距离将数据点分配到距离其最近的簇对每一个簇,计算簇中所有点的均值并将均值作为质心。

二、wine数据集的红酒K-Means聚类

导入数据

f711ec8f7965029916b51c8b46b46e6c.png

数据预处理

d08b4b35a6a473719745e77fc62be2fe.png

数据聚类

5f33ff82475f9c8f27beb7117cf143c0.png

(1)对比真实标签和聚类标签求取FMI

e5b3b7f02b9e3069c19915181f1e3d80.png

(2)在聚类数目为2~10类时,确定最优聚类数目

bfc23b689a427d9a6ab131c6171c6067.png

数据越接近1更好所以由上图可得聚类最优为3类,与k-means聚类结果相同



推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
author-avatar
钟z4z萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有