k-means聚类

news2024/11/17 17:37:35

一、概述

  当前人工智能技术实现的一种主要手段是机器学习,而机器学习能够解决的问题主要有三种:分类、聚类、回归,有监督的是分类,无监督的是聚类。所谓聚类,就是以一定的方法将一堆样本依它们本身的数据特性划分成不同的簇类,以达成不同的技术目的,k-means就是这样一种基础聚类算法。

二、算法原理

  对给定的样本集,k-means基于迭代的思想,由聚集中心点划定簇集,簇集反过来确定新的聚集中心点,周而复始,最终获得最佳划分的簇集。k-means中的k即想要划定的簇数,它是一个超参数,需由人工事先指定。样本的簇集划归由它与各个聚集中心点的距离来确定,划归到距离最近的那一个,其中距离的计算一般采用欧氏距离;新划定的簇集则进一步计算质心作为新的聚集中心,质心即样本向量的均值 c = ( x ( 1 ) ˉ , x ( 2 ) ˉ , . . . , x ( n ) ˉ ) c=\left( \bar{x^{(1)}},\bar{x^{(2)}},...,\bar{x^{(n)}} \right) c=(x(1)ˉ,x(2)ˉ,...,x(n)ˉ)

算法描述
输入:样本集 T = { x 1 , x 2 , . . . , x N } T=\left\{ x_1,x_2,...,x_N \right\} T={x1,x2,...,xN},簇数k.
输出:质心集合 C = { c 1 , c 2 , . . . , c k } C=\left\{ c_1,c_2,...,c_k \right\} C={c1,c2,...,ck},划分样本集 D = { D 1 , D 2 , . . . , D k } D=\left\{ D_1,D_2,...,D_k \right\} D={D1,D2,...,Dk}.
(1) 任意选定k个样本作为初始聚集中心.
(2) 划分簇类
  1)对T中数据,计算与各个聚集中心的距离.样本x与聚集中心c的距离为 d = ∑ i = 1 n ( x ( i ) − c ( i ) ) 2 d=\sqrt{\sum_{i=1}^{n}{(x^{(i)}-c^{(i)})^{2}}} d=i=1n(x(i)c(i))2
  2)将样本划归到离得最近的聚集中心,形成簇类。
(3)计算质心作为聚集中心
对簇S,质心 c = ( c ( 1 ) , c ( 2 ) , . . . , c ( n ) ) c=\left( c^{(1)},c^{(2)},...,c^{(n)} \right) c=(c(1),c(2),...,c(n))其中

   c ( i ) = 1 M ∑ s = 1 M x s ( i ) c^{(i)}=\frac{1}{M}\sum_{s=1}^{M}{x_{s}^{(i)}} c(i)=M1s=1Mxs(i), M = ∣ S ∣ M=\left| S \right| M=S.
(4)重复(2)-(3)步,直至质心不发生偏移或达到指定的迭代次数.

三、python实现

'''
由sklearn实现kmeans聚类。
'''

import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")

#初始化数据集
d1 = np.random.rand(18,2)
d2 = 1.5 + np.random.rand(17,2)
d3 = 3 + np.random.rand(20,2)
data = np.concatenate((d1,d2,d3),axis=0)

#定义kmeans模型,n_clusters为指定的簇数k
kmr = KMeans(n_clusters=3)

#数据计算
fit_kmr = kmr.fit(data)

#获取标签结果
rs_labels = fit_kmr.labels_

#获取每个簇类的中心点
rs_center_ids = fit_kmr.cluster_centers_

#绘图
#绘制数据点
plt.scatter(data[:,0],data[:,1],c=rs_labels,alpha=0.5)
#绘制质心
plt.scatter(rs_center_ids[:,0],rs_center_ids[:,1],c='red')

plt.show()

运行结果:
在这里插入图片描述


End.

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

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

相关文章

docker安装mongdb

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非…

【操作系统】备忘录

进程上下文切换 用户态、内核态 内核态:也叫内核空间,是内核进程/线程所在的区域。主要负责运行系统、硬件交互。 用户态:也叫用户空间,是用户进程/线程所在的区域。主要用于执行用户程序。 内核态与用户态的区别 内核态与用户…

spring mvc文档阅读笔记——02

目录标题一、Asynchronous Requests(异步请求)(一)阻塞和非阻塞,同步和异步(二)DeferredResult(三)Callable二、跨域请求CORS(一)实现跨域请求的方式&#xf…

数据持久化-RDB-AOF

定义 将数据从掉电易失的内存放到永久储存的设备上 因为所有的数据都在内存是,所有必须得持久化 redis提供两种持久化方案 RDB默认开启、AOF RDB 1,保存真是的数据 2,将服务器包含的所有数据库数据以二进制文件形式保存到磁盘里面 3,默认…

JDBC管理事务

基本介绍 就是处理在mysql的事务 复习一下:事务是一组sql语句需要开启和提交,事务中的sql语句要么全部生效,要么全部不生效,提交之后就是全部生效,中间可以设置保存点,回退到保存点,或直接回退到最开始事务…

1.2.1存储结构:层次化存储结构、外存(辅存)、内存(主存)、CPU内部的寄存器、Cache(相联存储器)

1.2.1存储结构:层次化存储结构、外存(辅存)、内存(主存)、CPU内部的寄存器、Cache(相联存储器)存储系统--层次化存储结构外存(辅存)内存(主存)CPU…

并发编程学习(八):ReentrantLock

ReentrantLock 是java.util.concurrent.locks包下的类。相对于synchronized,它具备如下特性:可中断。可以设置超时时间。可以设置公平锁。支持多个条件变量。即可以有个多个waitset等待队列。与synchronized都支持可重入。ReentrantLock的基本语法:// 获…

数学建模相关竞赛零基础上手与入门介绍

文章目录1、赛事介绍与报名2、学习与训练2.1 比赛题目选择范围2.2 赛前组队与分工2.3 比赛时间分配1、赛事介绍与报名 什么是数学建模? 定义: 生活中的各种问题(如股票预测、火灾报警统计等),运用数学的方式去阐述并解决它。 数学建模赛事 …

cisp证书含金量怎么样?值不值得考?

这是CISP考试报名条件参考: 成为CISP,必须满足以下基本要求: 申请CISE、CISO注册资质,需满足以下教育和工作经验要求: (1)教育和工作经历要求:硕士及硕士以上学历,具备…

LabVIEW在实时目标上使用文件路径

LabVIEW在实时目标上使用文件路径文件路径和结构因目标操作系统而异。本文档讨论了推荐的LabVIEW编码实践,用于指定文件路径,以便应用程序可以无缝地从目标移动目标。实时操作系统选项所有NI实时控制器运行三种不同的操作系统之一,即PharLap、…

Find My资讯|美国航班取消,出行者疯狂购买苹果AirTag追踪行李箱

美国西南航空(Southwest Airlines Co.)由于所使用的 SkySolver 系统在圣诞假期间崩溃,导致航班出现大面积延误或取消(大约 13000 个航班受到影响),让公司损失超过 8 亿美元(当前约 53.76 亿元人…

5.kafka--生产调优

文章目录Leader Partition负载均衡消费者初始化流程消费者再平衡生产者和消费者如何提高吞吐量如何发送大消息Leader Partition负载均衡 参数名称描述auto.leader.rebalance.enable默认是true。自动LeaderPartition平衡。生产环境中,leader重选举的代价比较大&…

ADB快速入门

ADB快速入门 一、 简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具用来连接电脑和Android设备(手机、电脑、电视、平板、…

LIO-SAM代码解析——imuPreintegration.cpp

目录imuPreintegration.cpp1. TransformFusion 类1.1. lidarOdometryHandler1.2. imuOdometryHandler2. IMUPreintegration 类2.1. imuHandler2.2. odometryHandler⭐2.2.1. 初始化系统, 把初始的lidar位姿,速度,零偏加入到因子图中2.2.2. 将两帧之间的i…

【深度学习】简述CNN分类网络的演变脉络及各自的贡献与特点

问题 简述CNN分类网络的演变脉络及各自的贡献与特点 综述 深度学习的浪潮就是从CNN开始的,它结构形态的变化也见证着这门技术的发展。现在涌进来学习深度学习的大部分人都是做计算机视觉的,因为这个门槛相对较低,业界数据集开源了很多,也比较直观,而且对硬件设备的要求…

2023年二月份图形化四级打卡试题

活动时间 从2023年 1月1日至1月21日,每天一道编程题。 本次打卡的规则如下: (1)小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 (2)小朋友做完题目后&…

Spring Boot 整合Redis分布式锁 Lua脚本

参考:微服务 Spring Boot 整合Redis分布式锁 Lua脚本 实现优惠卷秒杀 一人一单_Bug 终结者的博客-CSDN博客 一、什么是Lua? Lua 是一个小巧的脚本语言。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编…

MySQL事务学习笔记

事务就是保证一组数据库操作,要么全部成功,要么全部失败。事务的实现是在引擎层, 因此我们说的是InnoDB的事务。为何需要事务?比如有一个转钱的业务,A给B转100, 那么就是两条sql语句,一个是A的钱…

Spring Boot 热部署(热加载)

idea 热部署作用&#xff1a;自动帮开发者重启 spring boot 项目&#xff0c;从而达到修改代码之后能够“实时”的看到最新的效果1.添加热部署框架支持<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</…

Spring和Spring Boot的区别

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Spring和Spring Boot的区别 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: …