kmeans算法中的sse_聚类算法入门:k-means

一、聚类定义

  • 聚类分析(cluster analysis)就是给你一堆杂七杂八的样本数据把它们分成几个组,组内成员有一定的相似,不同组之间成员有一定的差别。
  • 区别与分类分析(classification analysis) 你事先并不知道有哪几类、划分每个类别的标准。
  • 比如垃圾分类就是分类算法,你知道猪能吃的是湿垃圾,不能吃的是干垃圾……;打扫房间时你把杂物都分分类,这是聚类,你事先不知道每个类别的标准。

二、划分聚类方法: K-means:

对于给定的样本集,按照样本之间的距离(也就是相似程度)大小,将样本集划分为K个簇(即类别)。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。

  • 步骤1:随机取k个初始中心点
  • 步骤2:对于每个样本点计算到这k个中心点的距离,将样本点归到与之距离最小的那个中心点的簇。这样每个样本都有自己的簇了
  • 步骤3:对于每个簇,根据里面的所有样本点重新计算得到一个新的中心点,如果中心点发生变化回到步骤2,未发生变化转到步骤4
  • 步骤4:得出结果
    就像这样
e76bd11e7a5d7fd06a810d7c07ab12c7.gif

缺点:
初始值敏感、采用迭代方法,得到的结果只是局部最优、K值的选取不好把握、对于不是凸的数据集比较难收敛
如何衡量Kmeans 算法的精确度?
SSE(Sum of Square Error) 误差平方和, SSE越小,精确度越高。

三、改进算法-二分Kmeans

  • 首先将所有点作为一个簇,然后将其一分为二。
  • 每次选择一个簇一分为二,选取簇的依据取决于其是否能最大程度降低SSE即选取聚类后SSE最小的一个簇进行划分。
  • 直至有k个簇

四、Kmeans Code

import numpy as npimport matplotlib.pyplot as pltimport scipy.io as scio# %matplotlib inlinedef K_Means(X, sp, K): # 计算临近点 def near(p): dis = [np.sum(np.square(x-p)) for x in sp] return dis.index(min(dis))  # 打印结果 def print_result(sp_list): #打印中心点迭代轨迹 sp_list = [np.array([x[k] for x in sp_list]) for k in range(K)] for k in range(K): plt.plot(sp_list[k][:,0], sp_list[k][:,1], 'k->', label='type{}'.format(k)) #分类打印其他点 p_list = [[] for k in range(K)] for p in X: i = near(p)  p_list[i].append(p) p_list = [np.array(x) for x in p_list] color = ['r','g','b']  for i in range(K): plt.plot(p_list[i][:,0], p_list[i][:,1],color[i]+'o') plt.title('K-Means Result') plt.xlabel('X') plt.ylabel('Y') plt.legend('123') plt.show() # 迭代中心点 sp_list = [] sp_list.append(sp) while True: count = np.zeros(K) sp_t = np.zeros((K,2)) for p in X: i = near(p)  count[i] += 1 sp_t[i] += p sp_t = np.array([sp_t[i]/count[i] for i in range(K)]) SSE = np.sum(np.square(sp-sp_t)) if SSE < 0.001: break sp = sp_t sp_list.append(sp) print_result(sp_list) print('聚类中心:') for p in sp: print(p, end=',')if __name__ == '__main__': data = scio.loadmat('ex7data2.mat') X = data['X'] K = 3 sp = np.array([[3, 3], [6, 2], [8, 5]]) # starting point K_Means(X, sp, K)
45910202baf9800c193cdc0f21a9d41f.png

kmeans聚类结果

K为3聚类中心: [1.95399466 5.02557006],[3.04367119 1.01541041],[6.03366736 3.00052511]
如需要测试数据请留言

本文由作者授权转载并稍加修改:https://tawn0000.github.io

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

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

相关文章

win7局域网计算机 慢,Win7系统开机宽带连接很慢怎么办?

Win7系统用户在使用电脑系统上网时&#xff0c;都需要对宽度进行连接&#xff0c;但有用户反映在开机时机宽带连接非常缓慢&#xff0c;甚至要等上十来分钟&#xff0c;这使用户非常苦恼&#xff0c;那么Win7系统开机宽带连接很慢应该怎么办呢&#xff1f;接下来下面就来教大家…

小天才被限定使用时长的应用_家庭腕上社交新场景,OPPO Watch、小天才开启暖心联动...

说到小天才手表&#xff0c;相信家长朋友们都或多或少的听说过&#xff0c;或者正在给孩子使用。可爱的造型和实用的功能还有亲民的价格&#xff0c;让小天才手表成为青少年智能穿戴领域的热门产品。特别是对于正在上幼儿园和小学阶段的小朋友来说&#xff0c;支持通话和定位功…

ef 多个左联接查询_.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记...

2.4.5 EF Core -- 查询关联数据加载客户端与服务端运算跟踪与不跟踪复杂查询运算原生 SQL 查询全局查询筛选器关联数据加载学员和助教都在项目分组中&#xff0c;调整模型&#xff0c;删除 AssistantProjectGroup 添加 Member 列表public List<Member> Members { get; se…

三国杀服务器改名 插图修改,《三国杀》大幅修改的武将——新旧两版,你更喜欢哪一位...

三国杀中&#xff0c;某些武将因为太强或者太弱&#xff0c;不能适应游戏环境&#xff0c;都会进行修改&#xff0c;例如&#xff1a;李丰、马良、伏皇后、曹冲等等&#xff0c;但这些武将修改之后&#xff0c;原有武将就淘汰了。其实&#xff0c;还有一类武将&#xff0c;技能…

苹果电脑mac_清理Mac苹果电脑DNS缓存

说到清理苹果电脑想必不少网友会说苹果电脑不需要清理&#xff0c;但事实情况是现在对于“苹果电脑清理”的这个话题一直在不断地热议中&#xff0c;虽说Mac OS X系统它的优化比较好&#xff0c;很多小的无效数据文件会自动归类清除&#xff0c;但很多时候一些稍大的数据文件仍…

鼠标追踪没用_【擺评】赛睿里最好用的小手鼠标---Rival 3

拿到这鼠标真的是有段时间了&#xff0c;深度体验了一个多月。先说&#xff0c;这是我用过所有赛睿鼠标里最喜欢的鼠标&#xff0c;虽然它不贵&#xff0c;虽然它是有线的&#xff0c;但真的舒服&#xff01;可能我也没用过几个赛睿的鼠标&#xff0c;仅有以下几款&#xff0c;…

mysql执行一条语句会加锁吗_一条简单的更新语句,MySQL是如何加锁的?

看如下一条sql语句&#xff1a;# table T (id int, name varchar(20))delete from T where id 10&#xff1b;MySQL在执行的过程中&#xff0c;是如何加锁呢&#xff1f;在看下面这条语句&#xff1a;select * from T where id 10&#xff1b;那这条语句呢&#xff1f;其实这…

mysql命令4类_【Mysql】mysql数据库的一些常用命令

一、启动与退出1、进入MySQL&#xff1a;输入命令&#xff1a;mysql -u root -p直接输入安装时的密码即可。此时的提示符是&#xff1a;mysql>2、退出MySQL&#xff1a;quit或exit3、数据库清屏命令&#xff1a;system clear;二、库操作1、创建数据库命令&#xff1a;create…

u2020 华为_华为MateBook X Pro 2020款评测:全面屏商务旗舰再升级

在今年2月24日举办的华为终端产品与战略线上发布会上&#xff0c;华为正式发布了全新升级的MateBook X Pro 2020款笔记本电脑&#xff0c;并且加入了翡冷翠新色&#xff0c;再一次的奠定了产品高端时尚基调。除此之外&#xff0c;华为MateBook X Pro 2020款还升级了第10代智能英…

java -uf_Java如何快速修改Jar包里的文件内容

需求背景&#xff1a;写了一个实时读取日志文件以及监控的小程序&#xff0c;打包成了Jar包可执行文件&#xff0c;通过我们的web主系统上传到各个服务器&#xff0c;然后调用ssh命令执行。每次上传前都要通过解压缩软件修改或者替换里面的配置文件&#xff0c;这样感觉有点麻烦…

java 序列化实例_Java中的序列化与反序列化实例

创建的字节流与平台无关。因此&#xff0c;在一个平台上序列化的对象可以在另一个平台上反序列化。为了使Java对象可序列化&#xff0c;我们实现java.io.Serializable可序列化接口。ObjectOutputStream类包含writeObject()序列化对象的方法。public final voidwriteObject(Obje…

java 代码 _程序员用1.5小时写出的Java代码,让同事瞠目结舌!直呼优秀

1.曾经不止一次在生产中见过类似这样的代码&#xff1a;这有很多变种&#xff0c;例如用 Integer.valueOf(1)、 (Integer)1 之类的&#xff0c;那些细节都不重要。重要的是&#xff1a;凭空用一个 Integer 对象作为锁对象。2.AbstractComponentBuilderTemplateFactory3.HelloWo…

mysql workbench 从model建库_使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结...

转载请注明出处&#xff1a;http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自【我是干勾鱼的博客】 1 简单介绍MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。你能够用MySQL Workbench设计和创…

mysql5.7 hibenate5.1_5.7 Spring与Hibernate整合应用

下面以一个简单的实例说明Spring与Hibernate的整合策略&#xff0c;步骤如下。1 在SQL Server 2005中创建数据库表数据库名为XSCJ&#xff0c;表见附录A的登录表。2 创建Web项目命名为“Hibernate_Spring”3 添加Spring的开发能力右击项目名&#xff0c;选择【MyEclipse】→【A…

java 多进程多线程_Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题...

一、进程考虑一个场景&#xff1a;浏览器&#xff0c;网易云音乐以及notepad 三个软件只能顺序执行是怎样一种场景呢&#xff1f;另外&#xff0c;假如有两个程序A和B&#xff0c;程序A在执行到一半的过程中&#xff0c;需要读取大量的数据输入(I/O操作)&#xff0c;而此时CPU只…

python用法查询笔记_Python爬虫学习笔记(三)

handler处理器自定义 - Cookies && URLError && json简单使用Cookies&#xff1a;以抓取https://www.yaozh.com/为例Test1(不使用cookies)&#xff1a;代码&#xff1a;import urllib.request# 1.添加URLurl "https://www.yaozh.com/"# 2.添加请求头…

java编程实现素数环_结对编程(JAVA实现)

项目成员&#xff1a;黄思扬(3117004657)、刘嘉媚(3217004685)二、PSP表格PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)Planning计划6040 Estimate 估计这个任务需要多少时间6040Development开发14401505 Analysis 需求分析3015 Design Spec 生成设计文档…

java版的中世纪战争_世界战争英雄设置-火焰纹章英雄英雄地图及AI命令设置

英雄地图及AI命令设置游戏中练级塔中的AI设置和故事地图中的一样&#xff0c;所以如果故事地图中的AI是主动出击的&#xff0c;那练级塔一样的地图也是主动出击。故事地图中配置有5个敌人&#xff0c;在练级塔中也一样会配置5个敌人。不同的是职业可能会发生变化&#xff0c;但…

python pip安装依赖的常用软件源

目录 引言 一、什么是镜像源&#xff1f;​​​​​​​ 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中&#xff0c;我们经常需要下载和更新各种软件包和库文件。然而&#xff0c;由于网络环境的限制或者服务器的负载&#…

java虚拟机规范 51cto_java虚拟机

最近学习java虚拟机做了一些整理&#xff0c;会陆续发完。Java虚拟机一、概念&#xff1a;当我们谈到java虚拟机的时候&#xff0c;有可能指下面3个方面&#xff1a;1)&#xff1a;抽象java虚拟机的规范。2)&#xff1a;一个java虚拟机具体的实现。------实现是指&#xff1a;实…