c均值聚类matlab程序_机器学习笔记-9-聚类

1 K-means算法

K-means是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。
它是一个迭代算法,假设我们想要将数据聚类成 n 个组,其方法为:

  1. 选择K个随机的点,称为聚类中心
  2. 对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类
  3. 计算每一类的平均值,将该类所关联的中心点移动到平均值的位置
  4. 重复步骤2-3,直至中心点不再变化

伪代码表示为:

Repeat { 
for i = 1 to m 
c(i) := 当前样本x(i)与k个聚类中心中距离最近的索引 index (form 1 to K) of cluster centroid closest to x(i) 
for k = 1 to K 
μk := k聚类中样本的均值,即聚类中心 average (mean) of points assigned to cluster k
}

1.1 优化目标

用μ^1,μ^2,...,μ^k 来表示聚类中心,用c^(1),c^(2),...,c^(m)来存储与第i个实例数据最近的聚类中心的索引,μ_(c^(i))表示当前样本x^(i)所处的簇中心,其代价函数与优化目标如下图所示

abd022701970f896b08b8fb19abaed3c.png
代价函数(失真代价函数)

2f70beaeec1a5f427138625d0913d8ef.png
优化目标

由上图可知,K-means算法的优化目标即是找出使得代价函数最小的c^(i)和μ^(i)

1.2 随机初始化

在运行 K-均值算法之前,首先要随机初始化所有的聚类中心点
1. 选择K<m,即聚类中心点的个数要小于所有训练集实例的数量
2. 随机选择K个训练实例(x^(i)),然后令K个聚类中心分别与这K个训练示例相等

K-means的一个问题为,他有可能会停留在一个局部最小值处,解决这个问题的方法如下:

多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-means的结果,选择代价函数最小的结果。

这种方法在 较小的时候(2-10)还是可行的,但是如果 较大,这么做也可能不会有明显地改善。

1.3 选择聚类数

一个是肘部法则,不断改变K值,计算每一个K的代价,如下图左所示,如若出现了一个类似于肘关节的拐点的话,那么就采用该K值,但如果像下图右所示,是较为光滑的曲线的话,就不能用肘部法则去选择K值。

bc13b0d62969eed14039fd7fc271138d.png

大多数情况下聚类个数都是根据各训练示例可视化之后手动选择的

2 实现方法

2.1 将各样本点分簇

def find_closest_centroids(X, centroids):m = X.shape[0]k = centroids.shape[0]idx = np.zeros(m)              # idx[i]为距离样本i最近的集聚中心的索引for i in range(m):min_dist = 1000000         #每计算完一个样本点后需要将最短距重新初始化  for j in range(k):dist = np.sum((X[i,:] - centroids[j,:]) ** 2)  #代价函数if dist < min_dist:min_dist = distidx[i] = jreturn idx

2.2 计算各簇的所有样本的平均值

def compute_centroids(X, idx, k):           #k为聚类中心个数m, n = X.shape                          centroids = np.zeros((k, n))            #聚类中心为(k,n)for i in range(k):indices = np.where(idx == i)        #为i簇的各样本点的索引centroids[i,:] = (np.sum(X[indices,:], axis=1) / len(indices[0])).ravel()  #len(indices[0])为样本点的数量,axis=1为按列相加    return centroid

2.3 随机初始化

def init_centroids(X, k):m, n = X.shapecentroids = np.zeros((k, n))idx = np.random.randint(0, m, k)for i in range(k):centroids[i,:] = X[idx[i],:]  #随机选择训练示例作为聚类中心return centroids

2.4 聚类算法实现

def run_k_means(X, initial_centroids, max_iters):m, n = X.shapek = initial_centroids.shape[0]idx = np.zeros(m)centroids = initial_centroidsfor i in range(max_iters):idx = find_closest_centroids(X, centroids)centroids = compute_centroids(X, idx, k)return idx, centroids# 使用sklearn实现
from sklearn.cluster import KMeans      #导入kmeans库model = KMeans(n_clusters=16, n_init=100, n_jobs=-1)   
model.fit(data)                         #用数据拟合分类器模型
centroids = model.cluster_centers_
C = model.predict(data)                 #输出输入数据的预测结果

笔记参考资料:fengdu78/Coursera-ML-AndrewNg-Notes: 吴恩达老师的机器学习课程个人笔记

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

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

相关文章

html和css哪个优先,CSS3 | 样式和优先级

css3一般介绍&#xff1a;CSS注释&#xff1a;/*CSS*/CSS长度单位&#xff1a;1.px(像素)2.em(倍数&#xff0c;一般用于文字)一、HTML嵌套CSS3样式&#xff1a;1.外部(推荐)例如HTML文件为index.html将样式放入另一文件中&#xff0c;index.css以上两个文件放入同一文件夹下2.…

锁定计算机 背景图片,win7系统电脑更换锁屏壁纸的方法

当win7系统电脑在一段时间不动的话就进入锁屏状态&#xff0c;然而很多用户觉得默认的锁屏壁纸不好看&#xff0c;就想要更换自己喜欢的锁屏壁纸&#xff0c;那么win7怎么更换锁屏壁纸呢&#xff1f;下面给大家讲解一下win7系统电脑更换锁屏壁纸的方法。1、同时按下窗口键winR组…

计算机二级循环队列知识点,考点!计算机二级考试公共基础知识冲刺复习笔记:栈、队列和循环队列...

小编所收集到的相关计算机二级考试公共基础知识冲刺复习笔记&#xff1a;栈、队列和循环队列的资料 大家要认真阅读哦&#xff01;1、栈(Stack)又称堆栈。(1)栈是一种运算受限的线性表&#xff0c;其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶&#xff0c;…

lua 字符串包含_Programming in Lualua学习第11期 Lua模块与包

微信公众号&#xff1a;GameToolDev关注可了解更多的游戏工具开发教程。问题或建议&#xff0c;请公众号留言;从Lua 5.1开始&#xff0c;我们可以使用require和module函数来获取和创建Lua中的模块。从使用者的角度来看&#xff0c;一个模块就是一个程序库&#xff0c;可以通过r…

.net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表

VBA 是一种很久远的编程语言&#xff0c;但并不过时。在满足以下两个条件时&#xff0c;借助 VBA 可以极大的提升生产率&#xff0c;降低出错率&#xff1a;你的电脑上不允许自主安装软件&#xff1b; 你需要执行的工作中大部分的步骤都是固定且重复的。项目背景近期接到一个工…

axure实现复选框全选_jq简单的全选、反选和全不选效果

jquery是很实用和方便的前端效果库&#xff0c;可以让我减少很多的操作和节省很多的时间。今天&#xff0c;我们来说一下jq的全选、全不选和反选效果&#xff0c;本篇讲的是最简单简洁的jq全选、全不选和反选的例子。如果还有什么其他的功能要求可自己根据所学到的基础来扩展一…

计算机设备管理器驱动,设备管理器安装驱动程序的详细教程

系统出现问题&#xff0c;很多人都会选择重装系统。但系统重装后&#xff0c;我们所做的第一件事&#xff0c;就是安装驱动。有的驱动程序有安装包&#xff0c;直接安装就行了。但是有的驱动是只有驱动程序文件&#xff0c;而没有执行程序&#xff0c;这时候就需要通过设备管理…

电路串联和并联图解_一个关于交流电路谐振现象的仿真实验

对于一个具有电阻、电感、电容的交流电路中&#xff0c;交流电源两端的电压一般不和它输出的电流同相位。如果调节电路的参数或者电源频率使它们同相位&#xff0c;这时电路就发生了谐振现象。按照发生谐振现象的电路不同&#xff0c;可以分为串联谐振和并联谐振。1、串联谐振在…

sync不生效 vue_Vue实战项目-记账器-重要知识点汇总

历时3周&#xff0c;记账器项目终于可以运行了&#xff0c;这次项目是基于Vue开发&#xff0c;用到了typeScript和Scss,下面基于项目做一个阶段性的总结&#xff0c;回顾一下项目中用到的知识点。一.组件一开始用的是JS对象的写法&#xff1a;构造选项&#xff1a;{ data(){ret…

fifo页面置换算法设计思路_千万级并发!如何设计一个多级缓存系统?

什么是一个多级缓存系统?它有什么用?我们又如何设计一个多级缓存系统?图片来自 Pexels所谓多级缓存系统&#xff0c;就是指在一个系统的不同的架构层级进行数据缓存&#xff0c;以提升访问效率。我们都知道&#xff0c;一个缓存系统&#xff0c;它面临着许多问题&#xff0c…

apple quicktime怎么在ppt中用_PPT情感专题大赏No. 007:一份这就是街舞第三季主题PPT(上集)...

Hello&#xff0c;大家好&#xff0c;这里是千师傅小作坊第35期&#xff0c;我是你们的老朋友千千。熟悉千师傅小作坊的人都知道&#xff0c;千师傅特别喜欢看综艺&#xff0c;尤其是音乐、表演、舞蹈类。作为一个十八线PPT设计师&#xff0c;如果我看到好看的节目视觉设计&…

idea内存溢出解决_各种OOM代码样例及解决方法

针对目前大家对OOM的类型不太熟悉&#xff0c;那么来总结一下各种OOM出现的情况以及解决方法。把各种OOM的情况列出来&#xff0c;然后逐一进行代码编写复现和提供解决方法。1. 堆溢出-java.lang.OutOfMemoryError: Java heap space。2. 栈溢出-java.lang.OutOfMemorryError。3…

win7安装硬盘后无法启动计算机,硬盘装Win7系统电脑后开机提示DISK BOOT FAILURE怎么办【图文】...

很多人都喜欢安装win7系统&#xff0c;而硬盘安装系统的方式也是深受用户们的喜欢&#xff0c;但是最近有用户反映说硬盘安装win7系统之后&#xff0c;在重启计算机的时候屏幕提示DISK BOOT FAILURE,INSERT SYSTEM DISK AND PRESS ENTER&#xff0c;导致无法正常进入系统&#…

导入数据中文乱码_基于Navicat和Kettle的数据迁移完全解读(多图)

需求描述对于数据分析人员来说&#xff0c;工作的基础是数据&#xff0c;没有数据分析就无从谈起&#xff0c;即巧妇难为无米之炊。#数据库# #数据迁移# #Oracle# 然而&#xff0c;数据分析往往在实验环境或者准生产环境中开展&#xff0c;而数据分布在生产环境&#xff0c;因此…

怎样能确保计算机安全,如何确保电脑安全

如何确保电脑安全电脑安全问题层出不穷&#xff0c;如何确保电脑安全呢?下面是小编分享的一些方法&#xff0c;一起来看一下吧。一、关闭默认共享大部分的电脑系统在默认的情况下都是自动开启网络共享设置的&#xff0c;Win7系统也不例外&#xff0c;该功能主要是为了用户能够…

点云平面提取_基于LiDAR点云数据滤波方法

基于LiDAR点云数据滤波方法机载激光雷达所获取的数据被称为“点云(points cloud)”它在三维空间中呈现出随机分布的形状。在点云中&#xff0c;有些点属于真实的地形表面的点&#xff0c;有些点属于人工建筑物塔、输电线、桥等或自然植被如树、灌木、草、其他植物。激光雷达数据…

全国计算机一级书红色封面,年度最强的网红录取通知书,竟然附赠了一张黑胶唱片...

这两天世超被一张来自中国科学院大学的录取通知书给刷屏了&#xff0c;这份录取通知书里还附赠了一张黑胶光盘。光盘上刻录了一份国科大为新生准备的特别的礼物 —— 一段来自宇宙深处的声音。它们是由国科大师生通过 500 米口径球面射电望远镜( FAST )捕获的 15 颗脉冲星信号&…

动态新增表字段_制作动态的数据透视表(一):定义名称法创建数据透视表

——施瓦辛格&#xff1a;没有跌倒过的人不会成功。我们的日常工作中&#xff0c;会经常遇到一种情况&#xff1a;创建好数据透视表后&#xff0c;有其他被遗漏的数据内容需要重新插入到数据源后&#xff0c;有其他被遗漏的数据内容需要重新插入到数据源中&#xff1b;或者是需…

计算机公式or,【转载】 odds、OR和RR的计算公式和实际意义

1. OddsOdds 的意思为机率、可能性&#xff0c;是指某事件发生的可能性(概率)与不发生的可能性(概率)之比。假如某药物有疗效的比例为p1&#xff0c;则无效的比为1-p1&#xff0c;则odds的计算公式为&#xff1a;对于如下表所示的四格表&#xff0c;患病组的中暴露的概率(以实测…

系统相机裁剪比例_拍照时图片比例怎么选?比构图还要提前一步的摄影攻略要做好...

谈到摄影第一步&#xff0c;很多人都在说构图&#xff0c;但是比构图还要提前一步的&#xff0c;是选择合适的拍摄比例。在拍照时&#xff0c;始终是把要拍的东西装进设备的取景器里面&#xff0c;所以取景器的比例是16:9&#xff0c;还是4:3或者其他&#xff0c;就直接影响了我…