当前位置: 首页 > news >正文

数据挖掘(6)聚类分析

一、什么是聚类分析

1.1概述

  1. 无指导的,数据集中类别未知
  2. 类的特征:
    • 类不是事先给定的,而是根据数据的相似性、距离划分的
    • 聚类的数目和结构都没有事先假定。
  3. 挖掘有价值的客户:
    • 找到客户的黄金客户
    • ATM的安装位置

1.2区别·

二、距离和相似系数

2.1概述

  1. 原则: 组内数据有较高相似度、不同组数据不相似
  2. 相似性的度量(统计学角度):
    1. Q型聚类:对样本聚类(行聚类)
    2. R型聚类:对变量聚类(列聚类)

2.2Q型聚类(样本聚类、行聚类)

1.样本资料矩阵: 

2.定义距离的准则:

3.变量的类型

  1. 间隔尺度变量(数值型变量):可加可比
  2. 有序尺度变量(叙述型变量):不可加可比
  3. 名义尺度变量(名义型变量):不可加不可比

4.间隔尺度变量(数值型变量)

  1. 缺点:数据集中存在变量取值范围相差十分悬殊,会造成大数吃小数现象。

  2. 数值与指标量纲有关

度量值的标准化:

  • 将初始测量值转换为无单位变量。
  • 常用零均值规范化

特例:比例数值变量

 5.有序尺度变量

  1. 只可以不可加:比如各种排名、等级
  2. 步骤

6.名义尺度变量(符号变量)

  1. 两种类型

    1. 二元变量:
      • 只有两个取值变量:如男女、开关、01
    2. 名义变量:
      • 二元变量推广:如颜色变量(R,G,B)
  2. 二元变量计算:

    1. 差异矩阵法:

    2. 恒定的相似度

      1. 对称的二元变量:取值01内容同等价值、相同权值
        • 如:男女
      2. 简单匹配系数
        • d_{ij}=\frac{r+s}{q+r+s+t}
        • 取值不一样(01或10)的个数在所有变量的比重
    3. 非恒定的相似度

      1. 非对称二元变量:取值01内容重要程度不同
        • 如:病毒阴阳性
      2. Jaccard相关系数
        • d_{ij}=\frac{r+s}{q+r+s}
        • 取值不一样(01或10)的个数在所有变量(除去取值为00)的比重
    4. 相似度系数例子(小题计算):
    5. 名义变量计算(最常用):

7.混合数据类型

  1. 现实数据库中包含多类型的数据
  2. 如何计算?
    1. 将变量按类型分组,对每种类型的变量单独聚类分析,但实际中,往往不可行。
    2. 将所有的变量一起处理,只进行一次聚类分析。
  3. 相似度计算

 2.3R型聚类(变量聚类、列聚类)

  1. 相似系数:

    • 夹角余弦
    • 相关系数
  2. 夹角余弦

    • 值越大越好
  3. 变量间相似系数

  4. 相似系数

  5. 相似矩阵

三、 类的定义和类间距离

3.1类的定义

  1. 定义1:任意元素x_i,x_j,间距离d_{ij}满足:d_{ij}\leq h
    1. 适合:团簇状
  2. 定义2:任意元素x_i,x_j,间距离d_{ij}满足\frac1{k-1}\sum_{x_j\in S}d_{ij}\leq h(类内平均距离)
    1. 适合:团簇状
  3. 定义3:对于任意元素x_i\in S,存在x_j\in S使得其满足d_{ij}\leq h(不要求任意两个元素)
    1. 适合:长条状

3.2类间距离

  1. 最近距离

    1. w_kw_1最近距离为D_{kl}=min[d_{ij}]

    2. w_lw_qw_p,合并得到的D_{kl}=\min[D_{kp},D_{kq}]

    3. 实际中不多见,避免极大值影响

    4. 例子

      1. 计算类间距离,然后将最小的两个进行合并

  2. 最远距离 
    1. w_kw_1最远距离为D_{kl}=max[d_{ij}]
    2. w_lw_qw_p,合并得到的D_{kl}=\max[D_{kp},D_{kq}]
    3. 可能被极大值扭曲,删除后再聚类

    4. 例题:与上面的类似,每次选取距离最小的,合并的时候取的是max

  3. 平均距离

  4. 中间距离 
  5. 重心距离
    1. 一个类空间的位置用重心表示,两个类重心之间距离为二者的距离

    2. 对异常值不敏感,结果能稳定

四、基于划分的聚类方法

4.1划分方法

  1. 将n个对象划分成k类,且满足:
    • 每个聚类内至少包含一个对象
    • 每个对象必须属于一个类(模糊划分计划可以放宽要求)
  2. 划分方法:
    1. k-均值:每个聚类用该聚类中对象的平均值表示
    2. k-中心点:每个聚类用接近聚类重心的一个对象(真实存在的点)表示

4.2k-均值聚类算法

  1. 类均值表示

  2. 不适合处理离散型属性,适合处理连续型属性

  3. 算法流程:
    1. 选取聚类中心:随机从n个数据选择k个对象作为初始聚类中心
    2. 对剩余的每个对象,根据各个聚类中心的距离,将其赋给最近的聚类。
    3. 重新计算每个聚类的平均值(中心)
    4. 不断重复,直到准则函数收敛(减小)
  4. 收敛准则函数:误差平方和最小
  5. 缺点:

    1. 局部最优,不是全局最优

    2. 结果与k的取值有关

    3. 不适合发现大小很不相同的簇、凹状的簇
      *[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AwfktfUP-1641719199744)(/uploads/upload_98816f0f833feeb2da5536e0c31765d5.png =400x)]

    4. 只有在簇的平均值被定义的情况下才能使用,不适合有类属性的数据。

    5. 对噪声、异常点敏感。

  6. 示意图例子:

4.3k-中心点聚类算法

  1. k-中心点与k-均值算法区别
    簇中心评价准则
    k-均值簇中对象均值(可以是虚点)误差平方和
    k-中心点接近簇中心的一个对象表示(实际存在的点)

    绝对误差

  2. 基本策略
    1. 随意选择一个代表对象作为中心点,将剩余对象按最小距离划分进簇中。
    2. 重复利用非中心对象代替中心对象,若改善聚类的整体距离,则进行替代。
    3. 用代价函数进行估算质量:C_{pjo}=d(i,p)-d(j,p)
  3. 替代的四种情况
  • 如何判断非代表对象O_{random}是否能替代当前代表对象O_j,需要对每个非中心点P考虑
  • 替换的总代价:{CC}_{jo}=\sum_{j=1}^nC_{pjo}
  • 若总代价为负,则可以替代

 4.算法步骤

  1. 选取聚类中心:随机从n个数据对象选择k个
  2. 循环3-5,知道聚类不发生变化
  3. 对剩余的每个对象,根据各个聚类中心的距离,将其划分给最近的聚类。
  4. 选择任意非中心对象O_{random}计算与中心对象O_j交换的成本S。
  5. 若成本S为负,则交换中心对象。

五、基于层次的聚类方法

5.1 总述

  1. 给定的数据对象集合进行层次分解,根据层次分解的方式,层次的方法被分为凝聚、分裂。
  2. 凝聚层次法(agnes算法)
    • 自底向上
    • 一开始将每个对象作为单独的一组,然后合并相近的组,直到合为一组或到达终止条件
  3. 分裂层次法(dinan算法)
    • 自底向下
    • 所有对象置于一个簇,在迭代的每一步,一个簇被分裂为更下的簇,直到每个对象单独为一个簇或到达某个终止条件
  4. 计算距离方法

5.2agnes算法

  1. 步骤:
    1. 每个对象当做一个初始簇
    2. repeant 3-4
    3. 根据两个簇中最近数据点找到最近的两个簇
    4. 合并两个簇,生成新的簇集合
    5. until 达到定义的簇的数目
  2. 例子
  3. 特点:
    • 算法简单,合并会出现问题:一旦合并就不能撤销,可能会对后续操作产生影响。
    • 复杂度比较大O(n^2)

5.3diana算法

  1. 簇的直径:一个簇中的任意两个数据点的距离中的最大值
  2. 平均相异度(平均距离):
  3. 算法步骤
    将所有对象当做一个初始簇
    for(int i = 1; i <= k; i++){在所以簇中挑选出最大直径的簇C找出C中与其他点平近距离最大的一个点p放入splinter group,剩余点放入old partyRepeat在old party中找出到splinter group比到old party更近的点,加入splinter groupUntil 没有新的点被分到splinter groupsplinter group 与 old party 就被分解为两个新的簇
    }
    
  4. 例题

 六、 基于密度的聚类方法

6.1概述

  1. 基于密度聚类方法
    • 只要一个区域中点的密度(对象、数据点的数目)超过阈值,就将其加到与之相近的聚类中
  2. 可以过滤噪声、孤立点、发现任意形状的簇
  3. 代表算法:Dbscan、Optics、Denclue

相关文章:

数据挖掘(6)聚类分析

一、什么是聚类分析 1.1概述 无指导的&#xff0c;数据集中类别未知类的特征&#xff1a; 类不是事先给定的&#xff0c;而是根据数据的相似性、距离划分的聚类的数目和结构都没有事先假定。挖掘有价值的客户: 找到客户的黄金客户ATM的安装位置 1.2区别 二、距离和相似系数 …...

在启智平台上安装anconda

安装Anaconda3-5.0.1-Linux-x86_64.sh python版本是3.6 在下面的网站上找到要下载的anaconda版本&#xff0c;把对应的.sh文件下载下来 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 把sh文件压缩成.zip文件&#xff0c;拖到启智平台的调试页面 上传到平台上 un…...

棒球省队建设实施办法·棒球1号位

棒球省队建设实施办法 1. 建设目标与原则 提升棒球省队整体竞技水平 为了提升棒球省队整体竞技水平&#xff0c;我们需要采取一系列有效的措施。 首先&#xff0c;我们应该加强对棒球运动的投入和关注。各级政府和相关部门应加大对棒球运动的经费投入&#xff0c;提高球队的…...

架构案例2017(五十二)

第5题 阅读以下关于Web系统架构设计的叙述&#xff0c;在答题纸上回答问题1至问题3.【说明】某电子商务企业因发展良好&#xff0c;客户量逐步增大&#xff0c;企业业务不断扩充&#xff0c;导致其原有的B2C商品交易平台己不能满足现有业务需求。因此&#xff0c;该企业委托某…...

给四个点坐标计算两条直线的交点

文章目录 1 chatgpt42、文心一言3、星火4、Bard总结 我使用Chatgpt4和文心一言、科大讯飞星火、google Bard 对该问题进行搜索&#xff0c;分别给出答案。先说结论&#xff0c;是chatgpt4和文心一言给对了答案&#xff0c; 另外两个部分正确。 问题是&#xff1a;python 给定四…...

从入门到进阶 之 ElasticSearch SpringData 继承篇

&#x1f339; 以上分享 从入门到进阶 之 ElasticSearch SpringData 继承篇&#xff0c;如有问题请指教写。&#x1f339;&#x1f339; 如你对技术也感兴趣&#xff0c;欢迎交流。&#x1f339;&#x1f339;&#x1f339; 如有需要&#xff0c;请&#x1f44d;点赞&#x1f…...

中文编程开发语言工具编程案例:计时计费管理系统软件连接灯控器编程案例

中文编程开发语言工具编程案例&#xff1a;计时计费管理系统软件连接灯控器编程案例 中文编程开发语言工具编程案例&#xff1a;计时计费管理系统软件连接灯控器编程案例 中文编程系统化教程&#xff0c;不需英语基础。学习链接 https://edu.csdn.net/course/detail/39036...

YOLOv7改进:动态蛇形卷积(Dynamic Snake Convolution),增强细微特征对小目标友好,实现涨点 | ICCV2023

💡💡💡本文独家改进:动态蛇形卷积(Dynamic Snake Convolution),增强细长微弱的局部结构特征与复杂多变的全局形态特征,对小目标检测很适用 Dynamic Snake Convolution | 亲测在多个数据集能够实现大幅涨点 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.…...

从文心大模型4.0与FuncGPT:用AI为开发者打开新视界

今天&#xff0c;在百度2023世界大会上&#xff0c;文心大模型4.0正式发布&#xff0c;而在大洋的彼岸&#xff0c;因为大模型代表ChatGPT之类的AI编码工具来势汹汹&#xff0c;作为全世界每个开发者最爱的代码辅助网站&#xff0c;Stack Overflow的CEO Prashanth Chandrasekar…...

Nginx集群负载均衡配置完整流程

今天&#xff0c;良哥带你来做一个nginx集群的负载均衡配置的完整流程。 一、准备工作 本次搭建的操作系统环境是win11&#xff0c;linux可配置类同。 1&#xff09;首先&#xff0c;下载nginx。 下载地址为&#xff1a;http://nginx.org/en/download.html 良哥下载的是&am…...

如何生成SSH服务器的ed25519公钥SHA256指纹

最近搭建ubuntu服务器&#xff0c;远程登录让确认指纹&#xff0c;研究一番搞懂了&#xff0c;记录一下。 1、putty 第一次登录服务器&#xff0c;出现提示&#xff1a; 让确认服务器指纹是否正确。 其中&#xff1a;箭头指向的 ed25519 :是一种非对称加密的签名方法&#xf…...

设计模式:抽象工厂模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

大家好&#xff01;本节主要介绍设计模式中的抽象工厂模式。 简介&#xff1a; 抽象工厂模式&#xff0c;它是所有形态的工厂模式中最为抽象和最具一般性的一种形态。它用于处理当有多个抽象角色时的情况。抽象工厂模式可以向客户端提供一个接口&#xff0c;使客户端在不必指…...

ocpp-远程启动(RemoteStartTransaction)、远程停止(RemoteStopTransaction)

目录 1、介绍 2、远程启动-RemoteStartTransaction 3、远程停止-RemoteStopTransaction 4、代码 4.1 OcppRechongFeign 4.2 CmdController 4.3 CmdService 4.4 RemoteStartTransactionReq 4.5 接收报文-DataAnalysisController 4.6 接收报文实现类-DataAnalysisServi…...

【网络安全】安全的系统配置

系统配置是网络安全的重要组成部分。一个不安全的系统配置可能会使网络暴露在攻击者面前&#xff0c;而一个安全的系统配置可以有效地防止攻击者的入侵。在本文中&#xff0c;我们将详细介绍如何配置一个安全的系统&#xff0c;包括操作系统配置&#xff0c;网络服务配置&#…...

conda使用一般步骤

Terminal&#xff1a;conda create --name myenv python3.7 如果环境不行的话 1.source /opt/anaconda3/bin/activate 2.可能是没有源 vim ~/.condarc将需要的源装上 conda clean -i将原先的源删除 3.然后再conda create即可 4.需要激活环境 conda activate numpy 5.pycharm配置…...

如何做好需求收集?方法和步骤

需求收集是理解你想要构建什么以及为什么要构建它的过程。需求收集通常被视为开发软件应用&#xff0c;或开发硬件产品的一部分。其重要性不言而喻。据调查显示50%以上产品在市场上失败的原因&#xff0c;是由于忽视了用户需求。 一、需求收集为什么会困难&#xff1f; 困扰项…...

SpringBoo整合WebSocket实战演练——Java入职十三天

前言 本文将介绍如何在Spring Boot应用程序中使用WebSocket实现服务端向客户端推送消息。Spring Boot和WebSocket的整合实现服务端向客户端推送消息,使得客户端能够实时接收并处理服务器发来的信息。WebSocket协议是一种双向通信的网络协议,使得客户端和服务器能够建立持久连…...

众佰诚:抖音小店的体验分什么时候更新

随着移动互联网的发展&#xff0c;越来越多的电商平台开始涌现&#xff0c;其中抖音小店作为一种新型的电商模式&#xff0c;受到了许多用户的欢迎。然而&#xff0c;对于抖音小店的体验分更新时间&#xff0c;很多用户并不是很清楚。本文将对此进行详细的解答。 首先&#xff…...

详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

文章目录 简介函数原型代码示例参考资料 简介 有的时候我们需要将两张图片在alpha通道进行混合&#xff0c;比如深度学习数据集增强方式MixUp。OpenCV的addWeighted提供了相关操作&#xff0c;此篇博客将详细介绍这个函数&#xff0c;并给出代码示例。&#x1f680;&#x1f6…...

单链表经典OJ题:反转链表

题目&#xff1a; 给你单链表的头节点 head &#xff0c;i请你反转链表&#xff0c;并返回反转后的链表。 图例&#xff1a; 分析&#xff1a; 根据链表的特征&#xff0c;反转链表的本质便是改变节点内部的指针方向。 将原先指向下一个节点的指针进行修改&#xff0c;将其的…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...