K均值算法总结

这几天在一个项目上需要用到K均值聚类算法,以前都是直接利用百度老师copy一个Kmeans算法代码,这次想自己利用已知的算法思想编写一下,编写才知道,虽然熟悉了算法思想,真正实现时,还是遇到不少bug,这就是小学老师说的"眼高手低",还是需要亲自动手实现一下,才算真正的掌握思想。

回顾一下Kmeas算法思想,将若干元素聚为k类,使之,每一类内的元素相似度较高,类间的元素相似度较低,达到将若干元素划分的目的,具体如下:

1.初始化质心,初始化质心有多种初始化方法,我熟知的有两种,随机选择k个元素,作为k个初始质心;利用最大最小原则初始化质心。

前者简单,不做解释,重点解释一下后者,"最大最小"

这里,两个元素距离较近,认为是相似的,距离较远,相似度低

1)第一个质心是随机选取的,这里用随机数作为第一个质心

2)第二个质心的选择:选取剩下的元素到第一个质心的相似度的最小值,作为第二个质心(通俗理解是找一个距离第一个质心最远的元素)

3)第三个质心的选择:找一个距离第一个,第二个质心最远的元素(剩下的元素到第一个,第二个质心的相似度=max(sim(元素,第一个质心),sim(元素,第二个质心))),然后min(max(sim(元素,第一个质心),sim(元素,第二个质心))),这就是最大最小的具体体现。

4)剩下的质心选择同3)

2.在确定了K个初始质心之后,然后对剩下的n-k个元素,划分到距离最近的质心中,这样每个簇中就多于1个元素

3.更新每一个簇中的质心

4.求每个簇的误差,进而求总误差,如果满足阈值要求,就终止算法,不满足进入5.

5.迭代对每个元素执行2中的划分,质心不再变化,就终止算法,否则就继续更新质心,执行5.

下面是算法代码:

http://yunpan.cn/cyRsyLbzwqekE  提取码 edb0

 

转载于:https://www.cnblogs.com/yuwenfeng/p/4210007.html

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

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

相关文章

linux c之创建进程fork和vfork函数之间的区别

1、函数简介 1)、得到当前的进程id pid_t getpid(); 2)、fork函数 要创建进程,必须调用fork函数, 系统调用fork用于派生一个进程,函数原型如下 #include<sys/types.h>#include<unistd.h>pid_t fork(void) 若成功,父进程中返回子进程id,子进程返回0;若…

前端几个笔试题及答案(bd)

1. 行内元素、块级元素和空元素&#xff08;void&#xff09;举例。 块级元素&#xff1a;<address>、<caption>、<dd>、<div>、<dl>、<dt>、<fieldset>、<form>、<h1>、<h2>、<h3>、<h4>、<h5&…

架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)

一、序言 Hadoop是一个技术生态圈&#xff0c;zookeeper是hadoop生态圈里一个非常重要的技术&#xff0c;当我研究学习hadoop的相关技术时候&#xff0c;有两块知识曾经让我十分的困惑&#xff0c;一个是hbase&#xff0c;一个就是zookeeper&#xff0c;hbase的困惑源自于它在颠…

据说很多女生都想知道男生是如何上厕所的?

1 老婆守恒定律&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 捡破烂的狗子&#xff08;via.李市民&#xff0c;侵删&#xff09;▼3 见过最搞笑的买药经历&#xff08;素材来源豆瓣yuyii&#xff0c;侵删&#xff09;▼4 男朋友的室友可以多粘人&#xff1f;&a…

【云图】如何设置支付宝里的家乐福全国连锁店地图?

【云图】如何设置支付宝里的家乐福全国连锁店地图&#xff1f; 原文:【云图】如何设置支付宝里的家乐福全国连锁店地图&#xff1f; 摘要&#xff1a;本文详细讲解了&#xff0c;如何设置支付宝服务窗。商家如何将自己的全国连锁店放置到云图上&#xff0c;并且在支付宝服务窗中…

ABP vNext微服务架构详细教程——基础服务层

1服务创建在除身份管理相关服务以外的其他业务服务中&#xff0c;我们不需要包含用户角色权限管理功能模块&#xff0c;ABP vNext框架为我们提供了模块模式&#xff0c;其默认模板不包含身份管理相关模块&#xff0c;更适合用于搭建普通的业务微服务。以产品管理服务为例&#…

linux c之main(int argc, char *argv[], char *envp[])参数意义

1、问题 我们常见的int main(int argc, char *argv[], char *envp[]) 各个参数的意义 2、代码 #include<stdio.h> #include<unistd.h>int main(int argc, char *argv[], char *envp[]) {printf("argc ###\n%d\n",argc);puts("argc end ************…

salt-ssh的使用(不需要安装客户端)

什么情况下才使用salt-ssh&#xff0c;有一些比较老的红帽服务器&#xff0c;也有一些不方便安装salt-minion客户端。总会有一些服务器比较难安装上salt-minion的。好了&#xff0c;下面来说说简单配置默认使用roster配置文件vim /etc/salt/roster # Sample salt-ssh config fi…

bzoj 3232 01分数规划+最大权封闭子图判定

我们的目标是使v/c最小化&#xff0c;所以构造函数g(x)v-x*c&#xff0c;那么 二分一个X&#xff0c;判断当时的v-x*c的值是多少&#xff0c;然后根据g(x)函数的 单调递减性来二分&#xff0c;判断&#xff0c;直到g(x)0的时候当前的X就是答案。 然后我直接写的tle了&#xff0…

python设置cookie_Python中cookie的设置方法

学习目标:掌握 Cookie 的定义和使用Cookie 定义Cookie&#xff0c;有时也用其复数形式Cookies。指的是由服务端生成, 保存在客户端的一种数据存储形式&#xff0c;内部以 key-value 键值对形式存储&#xff0c; value大小有限制(最大为4kb)&#xff0c; 数据不安全。背景:Cooki…

中国第一个发《Nature》的竟然是清朝人!被皇帝夸天下第一,他却觉得羞耻..........

全世界只有3.14 % 的人关注了爆炸吧知识大清亡了&#xff01;这事在今天讲&#xff0c;算不得惊天动地&#xff0c;你听了之后&#xff0c;还可能微微一笑。作为中国最后一个封建王朝&#xff0c;它先闭关锁国&#xff0c;后又丧权辱国&#xff0c;造成百年前的中国在科学技术方…

【清北学堂】 死亡(death)

M个位置可以打sif&#xff0c;N1个人等着打sif&#xff0c;已知前N个人的时间&#xff0c;问第N1个人什么时候才能打sif&#xff08;不能插队&#xff0c;即必须按顺序来打sif&#xff09; 输入N,M以及每个人所需要的时间&#xff1b;输出第N1个人所需的时间 用优先队列用优先…

码农与UI沟通的日常

事情是这样的&#xff0c;这是一个兴趣群组的效果图。 我看了一眼没有帖子时的提示&#xff0c;觉得这样的提示 不走心 不能展现出我们团队对于人生及世界的深度理解和高尚的品格。 于是&#xff0c;我选择了表达内心的真实感受。 我觉得这完美表达了用户使用时的心声&#xff…

如何实现二次抛异常时保存第一次异常的详细信息?

咨询区 skolima我用反射来尝试调用一个可能会引发异常的方法&#xff0c;我如何将这个异常信息传递给调用者&#xff0c;而不需要通过反射包装器包装它。我目前的是再 throw 一次异常&#xff0c;但这种做法会销毁第一次异常的栈信息&#xff0c;参考如下代码&#xff1a;publi…

linux之cut命令使用和总结

cut是一个选取命令: 就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。 (1)其语法格式为:cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file] 使用说明 cut 命令从文件的每一行剪切字节、字符…

flash builder 4.7 debug via usb device iPhone 4s - device not found

http://forums.adobe.com/message/4865192 Please provide more info on the above issue: 1.What is the message shown when you try to debug the application via USB on iOS device ? 2.Are you able to debug on other iOS devices ? Run this below command from comm…

贝叶斯分类器_Sklearn 中的朴素贝叶斯分类器

(给Python开发者加星标&#xff0c;提升Python技能)作者&#xff1a;Martin Mller&#xff0c;翻译&#xff1a;github-sisibelovedhttps://github.com/xitu/gold-miner/blob/master/TODO1/naive-bayes-classifier-sklearn-python-example-tips.md用豆机实现的高斯分布这篇教程…

linux之tr命令使用和总结

1、tr命令介绍 用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。 带有最常用…

美少女什么味??竟然还有美少女风味泡面......

1 毕业后第一次参加聚餐&#xff08;via&#xff1a;刘燕铭&#xff09;▼2 建议使用摩斯密码&#xff0c;谢谢▼3 隆马戏&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 真的很谢谢▼5 啊&#xff0c;哪里买呢&#xff08;via&#xff1a;Zero 浅忆&#xff09;…

ABP vNext微服务架构详细教程——身份管理服务

1框架搭建ABP vNext创建包含app和module两种模板&#xff0c;其中app方式所创建的模板包含用户、角色、权限管理&#xff0c;ABP基础配置IdentityServer的基础配置数据等功能。module模式是一个比较干净的服务&#xff0c;里面不包含默认业务功能。ABP vNext创建包含app和modul…