青海西宁做网站多少钱/上海关键词排名推广
点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(已更完)
- ClickHouse(已更完)
- Kudu(已更完)
- Druid(已更完)
- Kylin(已更完)
- Elasticsearch(已更完)
- DataX(已更完)
- Tez(已更完)
- 数据挖掘(正在更新…)
章节内容
上节我们完成了如下的内容:
- 逻辑回归 scikit-learn 实现 剩余部分
- max_iter 分类方式选参数
基本概念
决策树、线性和逻辑回归都比较常用的机器学习算法,他们虽然有着不同的功能,但却属于有监督学习的一部分,模型在训练的时候,需要特征矩阵 X,也需要真实标签 Y。机器学习当中,还有相当一部分属于无监督学习,无监督的算法在训练的时候只需要特征矩阵 X,不需要标签。无监督学习的代表算法有聚类算法、降维算法。
聚类算法又叫做:“无监督分类”,其目的是将数据划分成有意义或有用的组(或簇)。这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯的帮助我们探索数据的自然结构和分布。
比如商业中,如果我们手头上大量的当前和潜在客户的信息,我们可以使用聚类将客户划分为若干组,以便于进一步分析和开展营销活动,最有名的客户价值判断模型 RFM(Recency frequency monetary),就常常和聚类分析共同使用。再比如,聚类可以用于降维和矢量量化(vector quantization),可以将高维特征压缩到一列当中,常常用于图像、声音、视频等非结构化数据,可以大幅度压缩数据量。
对比他们的特征
聚类算法是无监督类机器学习算法中最常用的一类,其目的是将数据划分成有意义或有用的组(也被称为簇)。这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯的帮助我们探索数据的自然结构和分布。如果目标是划分成有意义的组,则簇应该捕获数据的自然结构。然而,在某种意义下,聚类分析知识解决其他问题(如数据汇总)的起点。无论是皆在理解还是应用,聚类分析都在广泛的领域扮演着重要角色。这些领域包括:心理学和其他社会科学、生物学、统计学、模式识别、信息检索、机器学习、数据挖掘。
聚类分析在许多实际问题上都有应用,下面是一些具体的例子,按聚类目的是为了理解数据自然结构还用于数据处理来组织。
K-Means
基本原理
关键概念:簇和质心
K-Means是一种经典的无监督学习聚类算法,主要用于将一组数据划分为K个簇(Clusters),其中K是用户预先定义的聚类数量。它的目标是使得同一簇内的数据点之间的距离尽可能接近,而不同簇的数据点之间的距离尽可能远。
KMeans 算法将一组 N 个样本特征矩阵 X 划分为 K 个无交集的簇,直观上来看簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类,簇就是聚类的结果表现。
簇中所有数据的均值通常被称为这个簇的质心(centroids)。在一个二维平面中,一簇数据带你的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据的纵坐标的均值。同理可推导到高维空间。
在 KMeans 算法中,簇的个数 K 是一个超参数,需要我们人为输入来确定。KMeans的核心任务就是根据我们设定好的 K,找出 K 个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。
工作过程
K-Means 的执行步骤如下:
- 初始化簇中心(质心):随机选择K个数据点作为初始簇中心,称为质心(Centroid)。
- 分配数据点到簇:对于每一个数据点,计算它到每个质心的欧式距离,并将该数据点分配到距离最近的簇。这样就可以得到K个初始簇。
- 更新质心:对于每一个簇,计算该簇内所有数据点的平均位置,将该平均位置作为新的质心。
- 迭代更新:重复步骤2和步骤3,直到质心位置不再发生明显变化(即达到收敛)或达到最大迭代次数。
具体过程
具体过程可总结如下:
- 创建 K 个点作为初始质心(通常随机选择)
- 当任意一个点的簇分配结果发生改变时:计算质心与数据点之间的距离、将数据点分配到离其最近的簇
- 对每个簇,计算簇中所有点的均值并将均值作为新的质心
- 直到簇不再发生变化或者达到最大的迭代次数
那么什么情况下,我们的质心位置不再发生变化呢?
当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。
这个过程可以由下图来显示,我们规定,将数据分为 4(K=4),其中白色 X 代表质心位置:
在数据的多次迭代下(iteration),就会:
第六次迭代之后,基本上质心的位置就不会再改变了,生成的簇也变得稳定,此时我们的聚类就完成了,我们可以明显看出,K-Means 按照数据的分布,将数据聚集成了我们规定的 4 类,接下来我们就可以按照我们的业务求或者算法需求,对四类数据进行不同的处理。
簇内误差平方和
聚类算法出的类有什么含义呢?这些类有什么样的性质?我们认为,被分在同一个簇中的数据是有相似的,而不同的簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求定制不同的商业或者科技策略。
聚类算法的目的就是追求“簇内差异小,簇外差异大”。而这个差异,由样本到其所在簇的质心的距离来衡量。
对于一个簇来说,所有样本点质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差距离来衡量。
对于一个簇来说,所有样本点到执行距离之和越小,我们就认为这个簇中的样本越来越相似,簇内差异就越小,而距离的衡量方法由多种。
假设:
- x 表示簇中的一个样本点
- u 表示该簇中的质心
- n 表示每个样本点中的特征数目
- i 表示组成点 x 的每个特征编号
则该样本到质心距离可以由以下距离来衡量:
如果我们采用欧几里得距离,则一个簇中所有样本点的质心距离的平方和为:
- 其中,m 为一个簇中样本的个数
- j 是每个样本的编号
这个公式被称为簇内平方和(cluster sum of square),又叫做 Inertia。
而将一个数据集中的所有簇的簇内平方和相加,就得到了整体的平方和(Total Cluster Sum Of Square),又叫做 Total Inertia。
Total Intertia 越小,代表着每个簇内样本越相似,聚类的效果就越好。
因此 KMeans 追求的是,求解能够让 Inertia 最小化的质心。
实际上,在质心不断变化不断迭代的过程中,总体平方和是越来越小的,当整体平方和最小的时候,质心就不再发生变化了。
大家可以发现,我们的 Intertia 是基于欧几里得距离的计算公式得来的。实际上,我们也可以使用其他距离,每个距离都有自己对应的 Inertia。在过去的经验中,我们总结出距离所对应的质心选择方法和 Inertia,在 KMeans 中,只要使用了正确的质心和距离组合,无论使用什么样的距离,都可以达到不错的聚类效果:
而这些组合,都可以由严格的数学证明来推导,在实际中我们往往都使用欧式距离,因此我们无需去担忧这些距离所搭配的质心选择是如何得来的。
相关文章:

大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

QJson-趟过的各种坑(先坑后用法)
QJson-趟过的各种坑【先坑后用法】 Chapter1 QJson-趟过的各种坑【先坑后用法】一、不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge二、json格式化输出1.构建…...

基于STM32的hx711称重模块使用
欢迎入群共同学习交流 时间记录:2024/11/9 一、知识点记录 1、hx711 1)HX711是一款高精度压力传感器专用的24位模数转换芯片,主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围 2)工作电压2.6-5.5V 3)引…...

Nginx独立项目相关配置说明
配置前说明 1. 部署环境为https环境的,除华为云表态托管等都需要此配置,如cloud。 2. 部署环境为https环境的,可以使用api.js直接访问后端服务,无需此配置。 3. 转发的后台服务接口需要和后台人员沟通确认一致。详细配置说明 **…...

Nuxt3之使用lighthouse性能测试及性能优化实操
lighthouse性能测试工具 什么是 LightHouse 呢 Lighthouse 是一个开源的自动化工具,用于提高网页的质量。可以通过浏览器的开发者工具运行,也可以作为命令行工具或 Node.js 模块集成到持续集成系统中。Lighthouse 可以帮助开发者: 性能优化…...

webdriver.Chrome()参数简介
webdriver.Chrome()参数如下: executable_path:指定ChromeDriver的路径,若未设置且系统环境变量中已配置,则会自动寻找。options:通过webdriver.ChromeOptions()创建,用于设定浏览器的启动选项&…...

Ubuntu如何更换环境中的Python版本
Ubuntu Python 版本迁移指南 卸载 Python 3.8 # 移除 Python 3.8 sudo apt remove python3.8# 清理依赖 sudo apt autoremove# 清理缓存 sudo apt clean安装 Python 3.10 # 更新软件包列表 sudo apt update# 安装软件源管理工具 sudo apt install software-properties-commo…...

python-字符串中大写字母转小写,小写字母转大写
平时我们进行大小写转换基本都是使用upper和lower函数,使用方法: s Hello,Python123#大写转小写 s.lower() -->hello,python123#小写转大写 s.upper() -->HELLO,PYTHON123但是如果想把字符串中的大写字母转成小写,小写字母转成大写&a…...

前端学习之ES6+
1.ES6是什么 ES6,全称是ECMAScript 6,是JavaScript语言的下一代标准,由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015,从这个版本开始,ECMA组织决定每年发布一个新的ECMAScript版本,以使J…...

yolov10的几种权重文件
1.官方提供的几种模型权重文件 YOLOv10官网提供的权重文件是训练好的网络各层的权值,这些权值是通过训练集训练出来的。一旦网络训练完成,应用时只需加载这些权值,而不再需要原始的训练集。这意味着,如果你已经配置好了环境&am…...

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…...

C++类和对象 (下)
文章目录 前言一. 再探构造函数初始化列表特性总结练习 二. 类型转换2.1 隐式类型转换2.2 临时对象具有常性2.3 explicit关键字2.4 多参数类型转化 三. static成员概念特性练习 四. 友元概念特性 五. 内部类概念特性 六. 匿名对象概念特性 七. 对象拷贝时的编译器优化END 前言 …...

网络层5——IPV6
目录 一、IPv6 vs IPv4 1、对IPv6主要变化 2、IPv4 vs IPv6 二、IPv6基本首部 1、版本——4位 2、通信量类——8位 3、流标号——20位 4、有效载荷长度——16位 5、下一个首部——8位 6、跳数限制——8位 7、源 、 目的地址——128位 8、扩展首部 三、IPv6地址 1…...

【wpf】ResourceDictionary 字典资源的用法
如果你的字典资源是写在启动项目的App.xaml里 <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source"pack://application:,,,/YourNonStartupProject;component/Resources/SharedResour…...

Foliate:沉浸式阅读!!!
项目简介 Foliate 是一款开源的电子书阅读器,专为现代操作系统设计,提供了优雅且实用的阅读体验。它支持多种电子书格式,包括 EPUB、Mobipocket、Kindle、FB2、CBZ 和 PDF,让用户能够以分页或滚动模式阅读。Foliate 允许用户自定义…...

【excel基本操作-sumif绝对引用和相对引用
低量级数据的存储 复杂且无法优化的数据报表 怎么学excel? 一、输入与输出 二、计算与处理 三、可视化 四、连接匹配与自动化 excel操作笔记 打开表格第一步筛选 所以筛选的快捷键:shiftctrll 排序:多列排序 开始-排序与筛选-自定义排序-设置关键字添…...

word及Excel常见功能使用
最近一直在整理需规文档及表格,Word及Excel需要熟练使用。 Word文档 清除复制过来的样式 当复制文字时,一般会带着字体样式,此时可选中该文字 并使用 ctrlshiftN 快捷键进行清除。 批注 插入->批注,选中文本 点击“批注”…...

网页中的某个元素高度突然无法设置
做网页时本来一个div的高度好好的,结果代码打着打着突然发现有个div的高度变的很小,把我很多在这个div里的元素给搞的看不见了。 找了好久的原因最后发现是这个div的结束标签</div>不小心被我删了,之后把这个</div>给补上就好了。...

springboot给不同用户动态定制请求结果思路
我有个朋友在公司遇到一个需求:某个接口,面向不同的用户返回的字段数不一样字段数。 我举例两种场景并且都给一个方案他,同时也供大家参考。 场景1: 接口返回的是List 或者直接就是entity,且entity对应某张数据表&…...

【网络】HTTP(超文本传输协议)详解
目录 引言一、HTTP的基本概念1.1 什么是HTTP?1.2 HTTP的工作流程1.3 HTTP工作流程图 二、HTTP请求与响应2.1 HTTP请求格式2.2 HTTP响应格式 三、常见的HTTP状态码3.1 其他状态码示例 四、HTTP版本的演变4.1 HTTP/1.04.2 HTTP/1.14.3 HTTP/24.4 HTTP/3 五、HTTP的安全…...

poll()方法和remove()方法的区别是什么?
在Java的集合框架中,poll()方法和remove()方法是两个常用于从队列(Queue)头部获取并移除元素的方法。尽管它们的作用相似,但在行为细节和适用场景上存在显著的区别。以下是对这两个方法区别的详细阐述,旨在帮助开发者更…...

小程序跳转另一个小程序
1.配置要跳转的appid和小程序页面路径 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//develop开发版;trial体验版;release正式版envVersion: release, success(res) {// 打开成功console.log("跳转小程序成功&…...

介绍一下数组(c基础)(详细版)
c初期,记住规则,用规则。 我只是介绍规则。(有smart版) 数组 arr 看成一个集合但元素有次序了。 如何计算数组的大小-CSDN博客 简单讲解一下strlen与sizeof(c基础)-CSDN博客 arr[n] { }; [ ] 下标引…...

工业主板在汽车制造中的应用
工业主板在汽车制造中的应用非常广泛,主要得益于其高稳定性、高集成性、以及强大的计算和处理能力。以下是对工业主板在汽车制造中应用的详细分析: 一、应用场景 自动驾驶车辆: 工业主板作为自动驾驶车辆的核心计算平台,负责处…...

博弈论(所有情况最优解)——课堂笔记
博弈论(所有情况最优解)——课堂笔记|【博弈论】分割数游戏-CSDN博客https://blog.csdn.net/back_room/article/details/143464453?spm=1001.2014.3001.5501【博弈论】拍卖土地-CSDN博客...

深入提升Python编程能力的全方位指南
Python作为一种强大且灵活的编程语言,广泛应用于数据科学、机器学习、网络开发、自动化等领域。提升Python编程技术需要结合多方面的知识和技能。本文将详细介绍通过掌握核心技术、项目实践和代码示例来系统提升Python编程技能的方法。 一、掌握基础和高级Python特…...

如何使用 Python 语言的正则表达式进行网页数据的爬取?
以下是使用 Python 语言的正则表达式进行网页数据爬取的一般步骤: 一、安装必要的库: requests:用于发送 HTTP 请求获取网页内容。可以使用 pip install requests 命令进行安装。re:Python 的内置正则表达式库,用于对…...

剑指offer第七、八天
1.矩阵中的路径 class Solution {int n, m;int dx[4]{ 1,-1,0,0 };int dy[4]{ 0,0,1,-1 };bool dfs(int i, int j, vector<vector<char> >mat,vector<vector<bool> >vis, int u, const char* str){if (u strlen(str)-1){//刚开始这里我用的是strlen(…...

有哪些常见的方法可以评估中断处理能力?
以下是一些常见的评估中断处理能力的方法: 基准测试(Benchmarking) 定义和原理:基准测试是通过运行一系列标准化的测试程序来衡量系统性能的方法。对于中断处理能力评估,可以使用专门设计的中断基准测试软件。这些软件会模拟各种中断场景,如不同频率、不同优先级的中断请…...

Android GPU纹理数据拷贝
在 Android 开发中读取纹理数据有以下几种方法: glReadPixelsImageReaderPBO(Pixel BufferObject) HardwareBuffer 1. glReadPixels glReadPixels 是 OpenGL ES 的 API,通常用于从帧缓冲区中读取像素数据,OpenGL ES…...