聚类算法( clustering algorithm):

在前两章,我们学的是:线性回归,逻辑回归,深度学习(神经网络),决策树,随即森林算法。他们都是监督学习的例子。

在这一章里,我们将学习非监督学习的算法。

什么是聚类算法:

聚类算法是一种无监督学习方法,用于将数据集中的样本分为不同的组或簇,使得同一组内的样本彼此相似,而不同组之间的样本则具有较大的差异性。聚类算法的目标是发现数据中的内在结构,将相似的样本聚集在一起。

 

就像上图这样把我们的得到的数据进行分类,分类到同一个集合中。

K均值聚类(K-means Clustering): 

过程主要分为两步:

第一步:随机确定聚类的中心点,第二步,任取图中的已有的点,根据远近,确定它们属于哪一个聚类,第三步,重新根据这些分类过后的点,重新定位中心点。接着,重复以上的操作。

直到我们确定的中心点,不会再产生任何的移动,这时完成了所有的操作。

我们在重新确定中心点时,我们采用的是取它们的坐标的平均值,得到一个新的中心点 。当我们在确定中心点时,我们可以把多出来的那个点去掉,这是一个方法,另外一个方法就是重新我们的确定我们的中心点的操作。

我们根据体重和身高的数值,把我们的数据均分为三个组。这样我们就可以对于不同的人提供不一样大小的T-shirta。

c^{(i)}指的是从i=1到k的所有的集群。\mu _{k}指的是为k的集群的中心点。\mu _{c^{(i)}}指的就是第i个集群的中心点,这时要做优化,就要用到我们的成本函数式子如下J(c^{(1)},c^{(2)},...c^{(k)},\mu _{c^{(1)}},\mu_{c^{(2)}},...\mu _{c^{(k)}} )=\frac{1}{m}\sum_{i=1}^{k}(x^{(i)}-\mu _{c^{(i)}})^{2},当然我们这里要取得我们的最小值的成本函数。成本函数在这里也可以被称为是失真函数。 

这个图让我们很清晰的看到,在中心点改变时,我们的成本函数明显的变小了,所以说我们的取中心点的操作时正确的,可以让我们找到更加好的中心点。 每一次的迭代,我们的成本函数都会不断的下降,或者保持不变。但如果我们的成本函数发生了上升,那我们的代码中一定出现了bug。

当然,当成本函数不再下降时,那么它已经收敛了,我们需要停止我们的算法。

初始化K-Mean:

K<m,这里的K指的是我们的群集的中心点的个数,m指的是我们的群集点的个数,很明显K<m,但在这里与我们之前不一样的地方在于,之前我们取的是随机点,是在图上的任意点,而我们在这里的初始化的选取中心是从已有的点中选择。

我们会产生多个不同的生成的初始中心,比如下面生成了三个图,我们先计算它们的成本函数,通过成本函数的比较选出我们的成本函数最小的图。J1的值明显远远小于后两个,因为在它之中,每个集群的中心点离集群中的点的距离都非常的小,所以我们就会选择J1的图形。 

我们在这里进行100次的迭代,通过不断的收敛,最后终会得到我们的一个比较小的成本函数值,也就达到了收敛的目标。

选择聚类K的个数: 

如图,我们得到了一幅图,我们要对他们进行分集群,我们每个人有不同的选择。

我们在这里会使用到一个方法:肘方法(elbow method):

集群与成本函数构成的函数的样子和手肘一样,我们可以用这个方法得到每个集群K值与J成本函数有关。 

 在实际情况中,我们并不是用肘方法:

我们要注意的应该是每个不同的集群数量对于后期目标的影响。

我们举一个例子,比如我们的衬衫的尺寸大小 ,我们在第一个图中分为三个尺寸,大中小。第二张图中是超大,大,中,小,超小五个尺寸,我们在这里选择的标准,并不是只是看J成本函数的大小,其中更加重要的是,我们要去注意的这样的设置是否是最优解,对于后期是否好。

这就是第一个无监督算法:聚类算法。

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

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

相关文章

Excel 使用SQL统计表格数据

一. 需求 ⏹有如下Excel表格&#xff0c;现要求统计每个店铺的每种类别的商品总销量和最大销量 ⏹详细数据如下 店铺商品类别销量一山店苹果水果27729一山店梨水果76175一山店菠萝水果14699一山店香蕉水果61371一山店西兰花蔬菜72822一山店大白菜蔬菜65090一山店小白菜蔬菜13…

git的下载与安装

下载 首先&#xff0c;打开您的浏览器&#xff0c;并输入Git的官方网站地址 点击图标进行下载 下载页面会列出不同操作系统和平台的Git安装包。根据您的操作系统&#xff08;Windows、macOS、Linux等&#xff09;和位数&#xff08;32位或64位&#xff09;&#xff0c;选择适…

k8s系列之十五 Istio 部署Bookinfo 应用

Bookinfo 应用中的几个微服务是由不同的语言编写的。 这些服务对 Istio 并无依赖&#xff0c;但是构成了一个有代表性的服务网格的例子&#xff1a;它由多个服务、多个语言构成&#xff0c;并且 reviews 服务具有多个版本。 该应用由四个单独的微服务构成。 这个应用模仿在线书…

[Halcon学习笔记]标定常用的Halcon标定板规格及说明

1、介绍 大多数标定的要求都是以实心圆或方格来作为标志点&#xff0c;所以一般的标定板为棋盘格或矩阵圆点图&#xff0c;高精度的相机标定过程中&#xff0c;大多是以比较明确的特征点来作为参考&#xff0c;所以通过识别标定板的圆形&#xff0c;拟合出精确的中心位置&…

【面试题】HashMap为什么可以插入null而Hashtable就不可以(源码分析)

首先hashmap可以插入null值&#xff0c;但是hashtable和hashcurrentHashmap是不支持的&#xff1b;这是因为在 hashmap对插入key为null进行了特殊处理&#xff0c;当插入的值为null的时候会将哈希值设置为0 但是hashtable会直接抛出异常&#xff1a; 并且hashmap是线程不…

基于C/C++的easyx图形库教程

文章目录: 一&#xff1a;前言 二&#xff1a;窗口&#xff08;宽高 背景颜色 窗口标题 弹出对话框&#xff09; 三&#xff1a;图形绘制&#xff08;点 线 矩形 圆 椭圆&#xff09; 四&#xff1a;文字&#xff08;颜色 大小 背景 位置 打印 文字居中&#xff09; 五&a…

Jest:JavaScript的单元测试利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

IDEA创建Sping项目只能勾选17和21,没有Java8?

解决办法: 替换创建项目的源 我们只知道IDEA页面创建Spring项目&#xff0c;其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为 https://start.aliyun.com/

2024 IEEE GRSS Data Fusion Contest Track 2 竞赛总结

一、成绩 二、尝试方案过程 模型上&#xff1a;Swin-smallSwin-base: Val 阶段效果较好Swin-largeKnet-ResNeSt101-FCN: crop-size_512x512 TTA-x5.0-7.0 iter-10k Test 阶段效果较好Segformer-b4Segformer-b5: crop-size_640x640 TTA-x5.0-7.0 2、输入与预处理&#xff1a; 对…

【系统架构师】-第6章-数据库设计基础知识

1、三级模式-两级映像 外模式&#xff1a;视图、用户与数据库的接口 概念模式&#xff1a;表 内模式&#xff1a;存储方式&#xff0c;索引创建等 1&#xff09;外模式-模式映射&#xff1a; 视图与表的映射&#xff0c;表数据发生修改&#xff0c;只需要修改映射&#xf…

面试算法-62-盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。…

第十二届蓝桥杯省赛CC++ 研究生组-砝码称重

solution1&#xff08;通过10%&#xff09; 写了几种可能的组合方式&#xff0c;骗到一丢丢分数 #include<iostream> #include<algorithm> #include<map> using namespace std; int main(){int n, a[110], count 0, sum[110] {0};map<int, int> mp…

信创产品测评的范围是哪些?

信创&#xff0c;即信息技术应用创新。过去很多年间&#xff0c;国内 IT 底层标准、架构、生态等大多数都由国外 IT 巨头制定的&#xff0c;由此存在诸多安全风险。因此&#xff0c;我们要逐步建立基于自己的 IT 底层架构和标准&#xff0c;形成自有开放生态&#xff0c;而这也…

第六节:使用SMB开发WebService

一、概述 webservice在日常开发中是常用的接口形式&#xff0c;SMB在设计之初就将webservice作为重要的代理协议。在组件库中提供了webservice input和webservice output两个组件&#xff0c;分别用于发布接口和调用接口。 二、发布webservice 在csdnProject工程中创建名为c…

rust引用本地crate

我们可以动态引用crate&#xff0c;build时从crate.io下载&#xff0c;但可能因无法下载导致build失败。首次正常引用三方crate&#xff0c;build时自动下载的crate源码&#xff0c;我们将其拷贝到固定目录中&#xff1b; build后可在RustRover中按住Ctrl键&#xff0c;在crat…

Qt学习--界面知识点大杂烩

在开发过程中&#xff0c;通常需要打开或者保存上位机数据到本地&#xff0c;这时候就需要用到

【Web】记录[长城杯 2022 高校组]b4bycoffee题目复现

目录 前言 环境准备 简单分析 EXP(两种打法) 生成Payload 恶意类 ①Spring命令执行回显类 ②Filter型内存马 前言 本地jar包运行打通了&#xff0c;远程500&#xff0c;nss靶机有问题&#xff0c;换了bugku就可( 主要记录下做题过程&#xff0c;纯菜狗&#xff0c;小…

jupyter切换默认打开路径

首先打开anaconda输入 : conda activate然后输入 : jupyter notebook 然后可以找到一个路径 : 然后找到相应根目录夹 : 找到标出来的文件; 如果找不到的话 &#xff0c; 输入 : jupyter notebook --generate-config 然后目录下就会出现该文件 ; 然后打开它&#xff0…

Linux 文件系统:重定向、缓冲区

目录 一、重定向 1、输出重定向 2、输入重定向 3、追加重定向 4、dup2 系统调用 二、理性理解Linux系统下“一切皆文件” 了解硬件接口 三、缓冲区 1、为什么要有缓冲区? 2、刷新策略 3、缓冲模式改变导致发生写时拷贝 未创建子进程时 创建子进程时 使用fflush…

【Linux】多线程编程基础

&#x1f4bb;文章目录 &#x1f4c4;前言&#x1f33a;linux线程基础线程的概念线程的优缺点线程与进程的区别 线程的创建 &#x1f33b;linux线程冲突概念互斥锁函数介绍加锁的缺点 &#x1f4d3;总结 &#x1f4c4;前言 无论你是否为程序员&#xff0c;相信多线程这个词汇应…