[计算机毕业设计]聚类分析算法

news2024/10/7 2:26:55

前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯聚类分析算法

课题背景与意义

在现今这个“大数据”流行的时代,机器学习成为了数据挖掘中不可或缺的一部分,而聚类分析是其中最重要的研究分支之一。我国有句俗话,‘物以类聚,人以群分’。

聚类分析(Cluster Analysis),顾名思义是一种将数据集中的样本,根据内在的性质和规律,划分为若干不相交子集的数据归约技术。每个子集称为一个簇(Cluster)或类,是若干个观测值组成的群组,群组内观测值的相似度高于群组间。聚类过程仅仅能自动形成簇,但是簇的概念需要使用者进一步定义或者命名【1,2】。

聚类分析的应用非常广泛,它既可以作为一个单独的工具以发现数据样本中一些隐含的、深层的信息,也可以作为其他数据挖掘分析方法的一个预处理步骤。例如: 一家电商平台需要根据人口学特征和购买习惯等将客户分成不同的小组,比如“年轻白领”、“家庭主妇”、“在校学生”等等类型,以便通过相关的产品接触到他们的目标客户。

课题实现技术思路

聚类不存在客观标准,相对于其他机器学习分支来说,聚类的知识还不够系统化,给定数据集,总能找到以往算法未覆盖的某种标准而设计出新算法,而且不同的书籍讲解聚类的时候,会有不同的分类机构,再加之聚类的新算法层出不穷,因此常常以列举经典算法的形式进行说明讲解。

“西瓜书”列举介绍了如下三大类聚类算法(原型聚类、密度聚类、层次聚类),我们以此为框架,结合其他有关聚类的内容,对其进行讲述:

1、原型聚类

原型聚类假设聚类结构能通过一组原型刻画,通常算法先对原型进行初始化,然后对原型进行迭代更新求解,采用不同的原型表示,将产生不同的算法。实现假定了聚类中心数量时也被称为划分聚类。下面是几种著名的原型聚类算法【1】。

①K均值算法(K-means)

②学习向量量化(LVQ,Learning Vector Quantization)

③高斯混合聚类(Mixture of Gaussian)

④K中心点算法(PAM算法,Partitioning Around Medoids)

2、密度聚类(Density-based clustering)

密度聚类假设聚类结构能通过样本分布的紧密程度确定。通常情形下,密度聚类算法使用一定邻域内点的数量来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。最著名的当属DBSCAN算法。

3、层次聚类(Hierarchical clustering,或称系统聚类)

层次聚类通过计算不同类别的相似度类创建一个有层次的嵌套的树。通俗点说,可以将相似度高的簇进行合并,也可以将相似度低的簇进行分裂,不断重复到预期簇。而衡量相似度最常用的指标是距离。AGNES算法是一种经典的层次聚类方法。

小注:

在学习聚类的时候,很容易就看到其他的分类方法,比如根据聚类对象的不同将划分为R型聚类(对变量进行聚类)或者Q型聚类(对样品进行聚类)。其实都是可以的,聚类分析非常的灵活,我们要根据自己的需要进行聚类,不必拘泥于某种算法归类于某个分类,多看几个实例,进行实战操作,再回头看算法,会对他们的分类有更深的理解。

①K-means

提到聚类就不得不说起K-means,这是一种很典型的基于距离来判断数据相似性的动态聚类算法,就是说我们先初步选定聚类中心,然后挨个计算各个数据到聚类中心的距离,如果误差平方和最小,那么可以认为算法收敛,计算结束。

Step1:任选K个聚类中心,这里蕴含另一个意思,就是你开始就得确定好聚类中心的数量,这可难了,k值的选定非常难以估计,如果选择不合理,可能无法获得有效聚类结果。可能需要结合专业判断外加多次尝试。假设我们选定两个聚类中心。

Step2:分别计算样本数据集中每一个数据与各个聚类中心的距离,并按照最小距离原则,分配给2个聚类中心。举个栗子,其中有一个a点,a点距离聚类中心1距离为3,距离聚类中心2距离为4,则分配a点给聚类中心1。Ps:距离有绝对值距离,明氏距离等,根据需要选用。

Step3:更新聚类中心,根据新分成的2类建立新的聚类中心。

Step4:判断新旧聚类中心是否相等。

Step5:如果不相等,则重新计算各个数据到step3建立的聚类中心的距离,按照最小距离原则,重新分配数据到2个聚类中心。

Step6:更新聚类中心,根据新分成的2类建立新的聚类中心。

Step7:判断新旧聚类中心是否相等,如果相等,此时算法收敛,计算结束。如果不相等,则转到step2。

②LVQ

与k-means算法类似,学习向量量化(LVQ),也是试图找到一组原型向量来刻画聚类结构。但是与K-means不同,LVQ假设数据样本带有类别标记(比如,A部分数据为患病,剩下的B部分数据为非患病,每个数据都有自己的特征:某因素暴露程度评分等等),学习过程利用样本的这些类别标记(相当于监督信息),来辅助聚类。

给定含有m个数据的样本数据集D={(x1,y1),(x2,y2),(x3,y3)...(xm,ym)},每个样本的xj是由n个属性描述的特征向量(xj1,xj2,xj3...xjn),yj∈Y是样本xj的类别标记。LVQ的目标是通过学习迭代,获得一组n维原型向量{p1,p2,p3,p4,...,pq},每个原型向量代表一个聚类簇,簇标记∈Y【1】。

有点拗口,举个例子(自己编造,仅供理解模型。原始数据形式,没做三线表):

NO

特征1(xj1)BMI

特征2(xj2):年龄

类别(yj):高血压与否

1

22

23

2

2

24

24

2

3

35

55

1

4

34

49

1

5

28

45

1

6

27

32

2

   该例子给定含有6个数据的样本数据集D={(x1,y1),(x2,y2),(x3,y3)...(x6,y6)},每个样本的xj是由2个属性描述的特征向量(xj1,xj2),yj∈Y是样本xj的类别标记。LVQ的目标是通过学习迭代,获得一组2维原型向量{p1,p2,p3},每个原型向量代表一个聚类簇,簇标记∈Y。

说人话:我们有这么个6个样本量的数据集,每个数据有2个特征(BMI,年龄),分别归属两类(高血压,非高血压)目标是获得一组2维(BMI,年龄)原型向量{p1,p2,p3}。假定原型向量初始化为NO.1,NO.3,NO.5。

Step1:算法开始时,根据样本的类别标记和簇的预设类别对原型向量进行随机初始化,假定原型向量初始化为NO.1,NO.3,NO.5。

Step2:开始进行第一轮迭代,假设随机选取的样本是NO.2

Step3:计算该样本与当前三个原型向量的距离,找到与该样本距离最近的原型向量(假设是p3)

Step4:判断该样本与当前原型向量所属类别是否一致

Step5:若一致,则更新原型向量:p新=p3+ŋ*(NO.2-P3),P新向NO.2方向靠近

Step6:否则,P新远离NO.2方向p新=p3-ŋ*(NO.2-P3)。Ŋ为学习率,ŋ∈(0,1)

Step7:如果已经达到设定的最大迭代次数,或者原型向量更新很小或者不更新,则算法收敛,将当前原型向量作为结果返回。可以用相应的作图函数,对结果进行可视化。

③Mixture of Gaussian

高斯混合聚类与K-means和LVQ不同,虽都属于原型聚类,但K-means和LVQ以原型向量刻画原型,而高斯混合聚类采用概率模型来表达聚类原型【1】。小伙伴们,看到概率模型四个字,你们和我一样兴奋了吗?在说高斯混合聚类之前,我们必须得搞清楚什么是高斯分布,再搞清楚什么是高斯混合分布。

高斯分布:其实就是正态分布(手动滑稽),因为高斯在正态分布上做了重要的贡献,所以又叫高斯分布,或者叫一元高斯分布。

高斯混合分布【1】:先说一下多元高斯分布,对n维样本空间X中的随机向量x,若x服从高斯分布,其概率密度函数如下:

μ:n维均值向量

∑:n×n协方差矩阵

   

However,不管是一元高斯分布,还是多元高斯分布,都属于单高斯分布,当我们聚类的时候,肯定是想把一堆乱七八糟的数据聚成几类,而不是把一堆数据拟合成一个较为理想的单高斯模型(单个峰,大致对称)。

So,我们就需要建立高斯混合模型,所谓混合,就是多个单高斯模型的混合。然后,我们可定义高斯混合分布:

该分布由k个混合成分(K个单高斯分布)组成,每个混合成分对应一个高斯分布,其中ui和∑i是第i个高斯分布的参数。

αi是相应的混合系数,α∈(0,1),且αi求和为1

Step1:设置高斯混合成分个数,例如k=2,意思是有2个高斯混合成分,可以聚2类

Step2:初始化高斯混合分布的模型参数,α1,μ1,∑1,α2,μ2,∑2

Step3:根据贝叶斯公式,计算各混合成分生成的后验概率,得到新的模型参数

Step4:模型参数更新后,不断重复迭代,计算新的α1,μ1,∑1,α2,μ2,∑2,就会不断获得不同轮数迭代后的聚类结果

Step5:Plot或者类似函数可视化。

PAM是最早提出的k中心点算法之一,该算法用数据点替换的方法获得最优聚类中心,该算法相对于K-means的一个好处就是可以克服K-means容易获得局部最优的缺点。另外由于K-means计算均值来判断聚类中心,学过统计的都知道,均值很容易受到极端值影响,所以某一或某些极端值就有可能影响算法对于聚类中心的判断。

Step1:随机选择k个对象,作为初始的中心点,每个中心点代表一个簇;

Step2:计算每个样本到中心点的距离(比如,曼哈顿距离),指派每个剩余对象给离该剩余对象最近的簇,总代价为数据点与集群中心的距离之和;

Step3:随机地选择一个未选择过的非中心点对象y;

Step4:计算用y代替中心点的交换代价s=当前总代价-原总代价;

Step5:如果s为负,说明当前总距离比原总距离更小,则可以用y代替x,形成新的中心点;

Step6:重复2-直到k个中心点不再发生变化。

🚀海浪学长的作品示例:

大数据算法项目

机器视觉算法项目

 

微信小程序项目

Unity3D游戏项目

最后💯

🏆为帮助大家节省时间,如果对开题选题,或者相关的技术有不理解,不知道毕设如何下手,都可以随时来问学长,我将根据你的具体情况,提供帮助。

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

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

相关文章

this 的五种绑定方式(默认 / 隐式 / 显式 / new 构造函数 / 箭头函数)

目录 1. this 的五种绑定方式 1.1 默认绑定 1.1.1 基本概念 1.1.2 严格模式下的默认绑定 1.1.3 let、const、var 变量的默认绑定 1.1.4 函数作用域中的 this 指向 1.2 隐式绑定 1.2.1 关于 this 指向最后调用函数的那个对象,该怎么理解? 1.2.2 …

Hive三种模式安装部署

文章目录1. 内嵌模式安装2. 本地模式安装2.1 Mysql安装2.2 Hive安装配置3. 远程模式安装1. 内嵌模式安装 安装准备 下载hive:pass将文件复制到安装目录下: 解压安装包:tar zxvf apache-hive-3.1.2-bin.tar.gz修改名字:mv apache-h…

【序列召回推荐】(task3)GNN召回之SR-GNN

note 关于图深度学习算法的简单回顾: 一开始是经典的word2vec(以skip-gram为例,先取周围词随机初始化的embedding,进行平均池化后与中心词embedding进行点积)通过周围词预测中心词(多分类任务)…

(4)paddle---PCB检测的例子

1、主要参考 (1)大佬教程 基于PaddleDetection的PCB瑕疵检测_AI Studio的博客-CSDN博客 (2)blibli视频 253-14_PCB电路板缺陷检测_项目配置文件_dec_哔哩哔哩_bilibili (3)coco数据集说明 『深度应用…

(最新+详细+Pycharm远程调试GUI程序)解决qt.qpa.xcb: could not connect to display问题

(最新详细Pycharm远程调试GUI程序)解决qt.qpa.xcb: could not connect to display问题出现原因解决方法步骤下载MobaXTerm连接服务器安装Xorg和打开X11-forwarding附录设置共享目录修改环境出现原因 在ubuntu服务器上运行cv.imshow()方法时就会报以下错…

java计算机毕业设计ssm贫困区教育资源捐赠平台element vue前后端分离

项目介绍 随着时代的发展,互联网和计算机技术,带动了整个社会的发展,方便了我们的生活。贫困区教育资源捐赠管理平台是使用JAVA的SSM技术,MySQL作为数据库开发,用户通过网站了解贫困区情况,在线帮助贫困人群,实现贫困区教育资源捐赠管理。首先对本论文进行分析后,提出平台的相…

Linux 安装 Nginx

阿里巴巴开源镜像站-OPSX镜像站 阿里云开发者社区:Nginx Linux详细安装部署教程(附带使用案例) Nginx 下载 1、切换到root用户 2、安装c编译环境,如已安装可略过 yum install gcc-c 3、安装 Nginx 相关依赖 yum -y install…

java基于ssm的奖学金管理系统-计算机毕业设计

项目介绍 1.注册模块:游客用户可以系统进行账号注册,账号注册需要输入的数据,有用户名、密码、确认密码、邮箱、qq等,提交注册信息后,系统通过js代码判断用户输入的注册数据是否符合规格,如果符合规格后&a…

带临床数据的热图 -- 给样品添加TNM分期、年龄、性别、riskscore等信息

聚类热图是生物医学论文中最常见的一类图。通常,一篇研究癌症预后、突变等类型的文章最终都会聚焦到几个或者十几个基因,然后利用这些基因的表达量绘制热图,并尽可能多地在图中展示样品的临床信息,例如TNM(Tumor Node …

【Linux】信号

//myproc.cc #include<iostream> #include<unistd.h> using namespace std; int main() {while(1){sleep(1);}return 0; } 信号捕捉 signal #include<iostream> #include<unistd.h> #include<signal.h> using namespace std; void handler(int s…

Mybatis generator实战:自动生成POJO类完整解决方案

目录1、背景&#xff1a;Mybatis generator根据数据库表自动生成POJO类完整解决方案2、解决方案&#xff1a;mybatis generator 1.3.6 已经有了这个功能&#xff0c;2.1、增加了一个新的属性&#xff1a;2.2、具体配置&#xff0c;在generatreConfig.xml, 例如:3、一定要开始看…

训练集表达的分类规则整理

(A&#xff0c;B)---3*30*2---(1,0)(0,1) 做一个网络分类A和B&#xff0c;让A和B的训练集都只有一张图片3个点&#xff0c;测试集为 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 二进制的0-7.记录网络随着A和B的改变分类…

LeetCode - 300 最长递增子序列

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&…

Windows进程间利用管道通信

实验一 一、实验内容或题目&#xff1a; 在父进程中创建一个子进程&#xff0c;并建立一个管道&#xff0c;子进程向管道中写入一个字符串&#xff0c;父进程从管道中读出字符串。 二、实验目的与要求&#xff1a; 利用CRT相关接口&#xff0c;学习在父子进程间实现管道通信…

酒水商城|基于Springboot实现酒水商城系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 项目编号&…

【Java八股文总结】之集合

文章目录Java集合一、集合概述1、List、Set、Queue、Map的区别&#xff1f;2、Collections和Collection的区别&#xff1f;3、集合和数组的区别二、List1、ArrayList和LinkedList的区别&#xff1f;2、ArrayList和Vector的区别3、Vector、ArrayList和LinkedList的区别4、ArrayL…

Echarts:简单词云图实现

Echarts是一个开源的可视化图表库&#xff0c;支持丰富的图表&#xff0c;官网中还有大量示例可以选择使用、参考。 其中比较好玩、有趣的是词云&#xff0c;词云就是用关键词组成的一朵云&#xff0c;更广泛的定义是&#xff0c;由关键词组成的任意一种图案均称为词云。因此&…

[附源码]java毕业设计社区空巢老人关爱服务平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【服务器】无法进行ssh连接的问题逐一排查以及解决方法

一、检查服务器网络 先检查是否是网络的问题。按快捷键WinR&#xff0c;在弹出的对话框中输入cmd。 点击确定运行。在cmd窗口输入ping一下服务器的ip地址。 如果出现请求超时&#xff0c;解决办法如下&#xff1a; 在服务器端输入ifconfig命令&#xff0c;查看要连接的网络的…

[计算机毕业设计]知识图谱的检索式对话系统

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…