如何确定K-means算法中的k值?

1. K-means算法

k-means算法是机器学习中常用的聚类算法,原理简单实现容易,内存占用量也比较小。但使用这个方法时,需要事先指定将要聚合成的簇数k。 在先验知识缺乏的情况下,想要确定k是非常困难的。目前常用的用来确定k的方法主要有两种:肘部法、轮廓系数法。

2. 初始k值的选择

1) 肘部法

肘部法所使用的聚类评价指标为:数据集中所有样本点到其簇中心的距离之和的平方。但是肘部法选择的并不是误差平方和最小的k,而是误差平方和突然变小时对应的k值。

2) 轮廓系数法

轮廓系数是一种非常常用的聚类效果评价指标。该指标结合了内聚度和分离度两个因素。其具体计算过程如下:

假设已经通过聚类算法将待分类的数据进行了聚类,并最终得到了k个簇。对于每个簇中的每个样本点i,分别计算其轮廓系数。具体地,需要对每个样本点i计算以下两个指标:

  • a(i):样本点i到与其属于同一个簇的其他样本点的距离的平均值。a(i)越小,说明该样本i属于该类的可能性越大。
  • b(i):样本点i到其他簇C_{j}中的所有样本的平均距离b_{ij}的最小值 ,b(i)=min(b_{i1},b_{i2},\cdots ,b_{ik})

则样本点i的轮廓系数为:

s(i)=\frac{b(i)-a(i)}{max(a(i),b(i))}

而所有样本点i的轮廓系数的平均值,即为该聚类结果总的轮廓系数S。 S\in [-1,1]S越接近与1,聚类效果越好。

3) 具体案例

先利用sklearn.datasets中的方法生成自己的聚类数据集。具体如下:

对数据x进行归一化(因为KMeans算法中涉及到距离的计算),具体如下:

 使用肘部法确定k值,其代码如下:

 使用轮廓系数确定k值,其代码如下:

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

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

相关文章

上证综指K线图

分享一下,7月份的学习成果。 使用SQL和Python绘制的上证指数K线图,在此Mark一下~千里之行,始于足下,要继续加油呀~ 具体代码略了,如有感兴趣的小伙伴,可以私信交流。

Django项目第一次打开加载不出css文件

你需要找到setting.py如下部分 修改你存放css文件和js等文件的目录 指定正确,本地就能跑了

QQ秀,销金窟

我已经很久没有用QQ秀了,一直坦然地穿着小裤衩和小背心,觉得这是成熟人士的标志。昨晚上听豆荚说她又买了大把Q币,准备去买QQ秀和会员,让我有点心动,于是跑到QQ秀官网去看了一下。 天哪,一年半载不见&…

机器学习入门——K近邻算法

引言 本文介绍本系列的第一个机器学习算法——K近邻算法(K-Nearest Neighbors,knn)。 它的思想很简单,用到的数学知识也比较少(只用到了求距离公式),效果好。 本文还会涉及到和应用机器学习相关的问题的处理方式。 上一篇:机器学习入门——…

K-mean clustering(K均值聚类算法)

一、聚类与分类的区别 分类:类别已知,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。是有监督学习。 聚类:事先不知道数据会分为几类,通过聚类分析将数据聚合成几…

编程初学者如何在GitHub寻找适合自己的小项目?

即使作为编程新手,刚刚接触GitHub,也建议你从最简单的项目入手,而不是单纯研究大量理论。 这个⭐18.5k的优(宅)秀(男)项目:komeiji-satori/Dress就非常适合初学者Pick。 作为全球最…

K-means方法总结(附代码)

K-means方法总结(附代码) 这一周事情较多,不得已先放弃了验证码分割部分的卷积神经网络的学习,先写两篇关于聚类方法的内容,分别是k-means和混合高斯模型。因为之前的论文中有关于k-means方法的字符分割方法&#xff…

【数据结构】二叉树篇|超清晰图解和详解:二叉树的序列化和反序列化

博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: 是瑶瑶子啦每日一言🌼: 你不能要求一片海洋,没有风暴,那不是海洋,是泥塘——毕淑敏 目录 一、核心二、题目2.1:前序遍历2.2&…

2023.08.27 学习周报

文章目录 摘要文献阅读1.题目2.重点3.引言4.方法5.实验结果6.结论 深度学习Majorization-Minimization算法1.基本思想2.要求3.示意图 总结 摘要 This week, I read a computer science on the prediction of atmospheric pollutants in urban environments based on coupled d…

Xposed API详解

Xposed API详解 Hook修改变量Hook普通方法回调函数XC_MethodHookXC_MethodReplacement Hook获取参数与返回值获取参数获取返回值 Hook构造函数无参构造有参构造 Hook复杂函数Hook自定义类参数Hook替换函数与函数置空替换函数函数置空 Hook内部类与匿名类内部类匿名类 Xposed主动…

【Python】PySpark

前言 Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。 简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据…

Xposed常用逆向函数

1. 创建Xposed工程 在Android Studio中新建一个app工程&#xff0c;修改其中的 AndroidManifest.xml 文件&#xff0c;在<application></application>标签中增加如下代码 <meta-dataandroid:name"xposedmodule"android:value"true" />…

Xposed环境安装

一、Xposed 框架实现 Hook 的原理介绍 Zygote是Android的核心&#xff0c;每运行一个app&#xff0c;Zygote就会fork一个虚拟机实例来运行app&#xff0c; Xposed Framework深入到了Android核心机制中&#xff0c;通过改造Zygote来实现一些很牛逼的 功能。Zygote的启动配置在i…

Xposed 使用教程

Xposed作为Android开发中的神器&#xff0c;功能强大之处就不做过多介绍了&#xff0c;本文主要讲解一些常用的API&#xff0c;基本包含常用的Hook操作。 Hook静态变量 Class cla XposedHelpers.findClass(claName, loadPackageParam.classLoader); XposedHelpers.setStatic…

xposed android 4.4.2,xposed新版54

xposed新版54是一款好用的系统工具&#xff0c;软件安全&#xff0c;无需root权限&#xff0c;下载相对应功能板块即可在应用内实现应用多开、虚拟步数、以及qq&#xff0c;微信等多种功能&#xff0c;方便又实用&#xff01; 软件介绍 系统功能增强&#xff0c;如后台管制&…

Xposed安装

记录一下自己安装xposed的过程。网上很多xposed的安装教程&#xff0c;里面各种都是直接跳转到官网地址下载Xposed&#xff0c;但国内打不开&#xff0c;提示如下&#xff1a; 因此只能下载对应版本zip包进行本地安装&#xff0c;下载对应zip包放到“ /sdcard/Android/data/de…

android8 检测xposed,Xposed检测与自定义Xposed

Xposed检测与自定义Xposed 前言: Xposed检测 1、遍历App安装列表检测 2、自造异常检测堆栈信息。 3、检查关键Java方法是否变为native方法 4、反射XposedHelper类和XposedBridge类 5、检测Xposed相关文件 6、Root检测 7、安全建议 自定义Xposed 一、修改XposedBridge.jar包名 …

xposed android4.4,应用管理Xposed

应用管理Xposed是一款安卓应用管理xposed模块&#xff0c;可以帮助你更好的管理自己手机的各种应用的权限&#xff0c;应用使用需要先阅读了解一下使用的方法&#xff0c;非常强大的一款插件&#xff0c;欢迎大家前来下载。 新版特性 1. 为部分列表也添加基本筛选。 2. 在主页显…

android xposed 简书,Xposed 入坑篇

device-2018-04-12-101001.png 接下来开始敲代码了 美滋滋(皮一下很开心) 上一张整个工程的图 QQ截图20180412102021.png 以下是Test和Tutorial的代码 package com.zed.xposed.demo; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.Xpo…

Xposed 入门

Xposed的原理 Android基于Linux&#xff0c;第一个启动的进程自然是init进程&#xff0c;该进程会 启动所有Android进程的父进程——Zygote(孵化)进程&#xff0c;该进程的启动配置在 /init.rc脚本中&#xff0c;而Zygote进程对应的执行文件是/system/bin/app_process&#xf…