机器学习聚类——实验报告
机器学习实验报告
- 〇、实验报告pdf可在该网址下载
- 一、实验目的与要求
- 二、实验内容与方法
- 2.1 聚类算法学习与回顾
- 2.1.1 聚类任务
- 1)聚类任务的概念
- 2)符号定义
- 3)性能度量
- 2.1.2 K-means的算法模型
- 1)优化问题
- 2)迭代策略
- 2.1.3 K-means的算法流程
- 2.1.4 K-means的算法分析
- 1)复杂度:
- 2)优点:
- 3)缺点:
- 三、实验步骤与过程
- 3.0 实验数据集与类标签对齐问题
- 3.0.1 数据集
- 3.0.2 类标签对齐问题和停止条件
- 3.1 二维或三维空间中的2-3类点(每个类有10个点)聚类实验
- 3.1.1 实验说明
- 3.2 人脸图像聚类实验
- 3.2.1 实验设计
- 3.2.2 实验结果
- 1. ORL数据集
- 二类
- 三类
- 2. AR数据集
- 二类
- 三类
- 3. FERET数据集
- 二类
- 三类
- 3.2.3 实验分析
- 3.3 旋转物体图像聚类实验
- 3.3.1 实验设计
- 3.3.2 实验结果
- 二类
- 三类
- 3.3.3 实验分析
- 3.4 设计一个新的聚类算法
- 四、实验结论或体会
- 4.1 实验结论
- 4.2 实验体会
〇、实验报告pdf可在该网址下载
机器学习实验五:聚类
这个需要积分下载(因为实验报告后台查重,不建议直接白嫖)。
建议看博客,博客里面会有很多实验报告小说明会用【…】加粗注释。
一、实验目的与要求
- 简述K-Means聚类算法原理与算法过程。
- 熟练掌握K-means聚类算法与结果的展示,并代码实现,做一个二维或三维空间中的2~3类点(每个类有10个点)聚类实验,把聚类结果用不同颜色与符号表示。
- 实现人脸图像(取前23个人的人脸图像)聚类实验与旋转物体(在COIL20数据集中取前23个类的图像),把聚类结果用不同颜色与符号表示,并把对应的图像放在相应点的旁边,让人一眼看出结果对不对;同时,列表给出其在不同数据库在不同K时的聚类精度。
- 参看前人论文,设计一个全新的聚类算法,把简要内容写在本实验报告中;把长文写好提交到 ”论文提交处“;
二、实验内容与方法
2.1 聚类算法学习与回顾
2.1.1 聚类任务
根据周志华老师的《机器学习》一书中,来阐述聚类任务。
1)聚类任务的概念
聚类试图将数据集中的样本划分为若干个通常时不相交的子集,每个子集称为一个“簇”,通过这样的划分,每个簇可能对应于一些潜在的概念。需说明的是,这些概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可以作为分类等其他学习任务的前驱过程。例如,在一些商业应用中需对新用户的类型进行判别,但定义“用户类型”对商家来说却可能不太容易,此时,往往可先对用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后再基于这些类训练分类模型,用于判别新用户的类型。
2)符号定义
3)性能度量
聚类性能度量亦称为聚类“有效性指标”。监督学习中的性能度量作用相似,对聚类结果,我们需通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可以直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
聚类是将样本集D划分为若干互不相交的自己,即样本簇,那么,什么样的聚类结果比较好呢?直观上看,我们希望“物以类聚”,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的“簇内相似度”高,且“簇间相似度”低。
聚类性能度量大致有两类,一类是将聚类结果与某个“参考模型”进行比较,称为“外部指标”;另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”。
2.1.2 K-means的算法模型
1)优化问题
2)迭代策略
2.1.3 K-means的算法流程
2.1.4 K-means的算法分析
1)复杂度:
K-means算法的复杂度为Ο(mnk),其中m是样本维数,n是样本个数,k是类别个数。
2)优点:
- 容易理解,聚类效果不错,虽然是局部最优, 但往往局部最优就够了;
- 处理大数据集的时候,该算法可以保证较好的伸缩性;
- 当簇近似高斯分布的时候,效果非常不错;
- 算法复杂度低。
3)缺点:
- K 值需要人为设定,不同 K 值得到的结果不一样;
- 对初始的簇中心敏感,不同选取方式会得到不同结果;
- 对异常值敏感;
- 样本只能归为一类,不适合多分类任务;
- 不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类。
三、实验步骤与过程
3.0 实验数据集与类标签对齐问题
3.0.1 数据集
(1) ORL56_46人脸数据集
该数据集共有40个人,每个人10张图片。每张图片像素大小为56×46。本次实验取该数据集下的前三个类,每个类有10个样本点。
(2) AR人脸数据集
该数据库由3个以上的数据库组成;126名受试者面部正面图像的200幅彩色图像。每个主题有26张不同的图片。对于每个受试者,这些图像被记录在两个不同的时段,间隔两周,每个时段由13张图像组成。所有图像均由同一台摄像机在严格控制的照明和视点条件下拍摄。数据库中的每个图像都是768×576像素大小,每个像素由24位RGB颜色值表示。本次实验取该数据集下的前三个类,每个类有26个样本点。
(3) FERET人脸数据集
该数据集一共200人,每人7张,已分类,灰度图,80x80像素。第1幅为标准无变化图像,第2,5幅为大幅度姿态变化图像,第3,4幅为小幅度姿态变化图像。第7幅为光照变化图像。本次实验取该数据集下的前三个类,每个类有7个样本点。
(4) COIL-20数据集
COIL-20 数据集是彩色图片集合,包含对 20 个物体从不同角度的拍摄,每隔 5 度拍摄一副图像,每个物体 72 张图像。每张图像大小进行了统一处理为 128x128。本次实验取该数据集下的前三个类,每个类有72个样本点。
3.0.2 类标签对齐问题和停止条件
由于本次实验牵扯到类别的判断,这个需要考虑类标签对齐的情况。这里我使用了匈牙利算法来解决聚类问题识别率计算时出现的类标签不对齐的情况,具体函数可见ACC.m.
当目标函数值的变化不超过0.01时,迭代停止。
3.1 二维或三维空间中的2-3类点(每个类有10个点)聚类实验
3.1.1 实验说明
本次实验将随机初始化一些点进行实验。每一个样本点有一个坐标和一个类标签。对于二类情况,生成20个点;针对三类情况,生成30个点。然后准确率按照聚类结果和原始类标签进行比对计算。
由于本实验的数据与ORL数据集非常类似(每个类有10个点),所以直接采用ORL数据集进行实验和可视化。实验结果见3.2.2.1.
3.2 人脸图像聚类实验
3.2.1 实验设计
本次实验以ORL56_46、AR和FERET人脸数据集进行实验。为了尽量减少由于初始值造成的结果有较大差异,每组算法我会跑五次取其平均值作为其衡量标准。
3.2.2 实验结果
1. ORL数据集
二类
三类
2. AR数据集
二类
三类
3. FERET数据集
二类
三类
3.2.3 实验分析
从以上三个数据集在2~3个类的聚类效果上来看,ORL的聚类效果是最好的,FERET在二类的情况较好,在三类的情况相对较差。而AR数据集在二类和三类的情况都相对较差。根据AR数据集的构成,我导出了二类情况下的AR数据集聚类结果,可以发现,K-means算法更倾向于将同一时间段的人脸照片聚集在一起,而不是按照人的类别进行聚类。相比之下,在AR数据集上进行三类的聚类效果就明显得到了改善。
因为K-means算法的聚类结果会受初始化严重影响,那么通过重复实验我们也可以得出这个结论,每次实验的准确率不是一成不变的,这也和目标函数收敛的迭代次数有关,初始化越好,迭代次数越合理,准确率越高。
3.3 旋转物体图像聚类实验
3.3.1 实验设计
本次实验采用COIL-20数据集的前2~3个类别进行实验。为了尽量减少由于初始值造成的结果有较大差异,每组算法我会跑五次取其平均值作为其衡量标准。
3.3.2 实验结果
二类
三类
3.3.3 实验分析
可以发现,K-means算法对旋转数据集的二类聚类效果,三类效果一般,这是因为K-means比较适用于球形数据,旋转数据在拍摄过程中会因为角度问题导致图片类内的相似度较小,所以聚类效果不佳。根据K-means的假设:K均值假设每个变量的分布是球形的;所有的变量具有相同的方差;具有相同的先验概率,要求每个类拥有相同数量的观测。可以得出以上K-means算法的缺点,单纯使用K-means算法不仅耗时长,而且聚类效果差,此时如果结合PCA降维再聚类就可以明显发现:不仅效率得到了提升、而且二类问题上识别率最高可以达到100%,效果明显改善。从另一方面可以看出初始换对聚类很重要。如果初始化的点靠的比较近,K-means会趋向于聚成一个类,导致准确率只有50%。
根据上面两幅图,我们发现FCM在人脸聚类问题上效果并不是很好,往往FCM会因为隶属度的大小而趋向于聚成一个类,导致准确率低,进而导致准确率较低。FCM在UCI数据集上往往比K-means算法更有,一方面可能是因为维数大小不同,另一方面,人脸具有共同的特征。
3.4 设计一个新的聚类算法
【不献丑了,跳过跳过】
四、实验结论或体会
4.1 实验结论
本次实验的实验结论如下:
- K-means算法ORL的聚类效果是最好的,FERET在二类的情况较好,在三类的情况相对较差。而AR数据集在二类和三类的情况都相对较差。根据AR数据集的构成,我导出了二类情况下的AR数据集聚类结果,可以发现,K-means算法更倾向于将同一时间段的人脸照片聚集在一起,而不是按照人的类别进行聚类。相比之下,在AR数据集上进行三类的聚类效果就明显得到了改善。因为K-means算法的聚类结果会受初始化严重影响,那么通过重复实验我们也可以得出这个结论,每次实验的准确率不是一成不变的,这也和目标函数收敛的迭代次数有关,初始化越好,迭代次数越合理,准确率越高。
- K-means算法对旋转数据集的二类聚类效果,三类效果一般,这是因为K-means比较适用于球形数据,旋转数据在拍摄过程中会因为角度问题导致图片类内的相似度较小,所以聚类效果不佳。根据K-means的假设:K均值假设每个变量的分布是球形的;所有的变量具有相同的方差;具有相同的先验概率,要求每个类拥有相同数量的观测。可以得出以上K-means算法的缺点,单纯使用K-means算法不仅耗时长,而且聚类效果差,此时如果结合PCA降维再聚类就可以明显发现:不仅效率得到了提升、而且二类问题上识别率最高可以达到100%,效果明显改善。从另一方面可以看出初始换对聚类很重要。如果初始化的点靠的比较近,K-means会趋向于聚成一个类,导致准确率只有50%。
- FCM在人脸聚类问题上效果并不是很好,往往FCM会因为隶属度的大小而趋向于聚成一个类,导致准确率低,进而导致准确率较低。FCM在UCI数据集上往往比K-means算法更有,一方面可能是因为维数大小不同,另一方面,猜想是因为人脸具有共同的特征,所以每个样本的隶属度会趋于一致。
4.2 实验体会
本次实验主要内容是聚类,这类机器学习算法相对比较容易,也是我最熟悉的机器学习模块。本次实验将K-means,fastPCA+K-means(20维,100维,200维)和FCM在人脸聚类问题上进行准确率和效率的对比。本次实验也做的比较丰富,之前也和学长一起参与过聚类算法的研究,PCM、RCM、PRFCM等一些算法也可以尝试在人脸识别的问题上做做实验。对于K-means和FCM会趋向于收敛到一个类的问题,也有专门的论文去研究此类问题,但是这种弊端在人脸聚类的任务中会更加突出。
聚类在数学建模中是一种评价类的方法,非常常用也很有意思,我也对聚类问题非常感兴趣,后期可能会继续尝试一些有关于聚类算法的研究。最后,向提出和创新算法的科研工作者致敬!
机器学习聚类——实验报告相关推荐
- 电商评论数据聚类实验报告
电商评论数据聚类实验报告--冯煜博 目录 实验目的 整体思路 数据介绍 代码与实验步骤 4.1 爬虫代码 4.2 数据清洗 4.3 分词 4.4 去停用词 4.5 计算TF-IDF词频与聚类算法应用 ...
- 机器学习SVM——实验报告
机器学习实验报告 〇.实验报告pdf可在该网址下载 一.实验目的与要求 二.实验内容与方法 2.1 SVM的基础概念 2.2 经典SVM的优化问题及其推导 2.3 核技巧SVM的优化问题及其推导 2. ...
- [HITML] 哈工大2020秋机器学习Lab1实验报告
Gtihub仓库 不想白嫖的就来这投个币吧 2020年春季学期 计算学部<机器学习>课程 Lab1 实验报告 姓名 学号 班号 电子邮件 手机号码 1 实验目的 掌握最小二乘法求解(无惩罚 ...
- K-Means聚类实验报告实例
1.实验背景与问题提出 PS:寒假接高数辅导,操作系统辅导,数据结构辅导,有需要者评论或私信 聚类(clustering)是无监督学习(unsuperviserd learning)中研究和应用最多的 ...
- 大数据聚类算法性能比较及实验报告
在大数据领域这个聚类算法真是起到了十分重要的作用,只有通过有效地聚类才能得到非常直观的结果. 有一个实验要求对比两种大数据聚类算法的性能,具体的代码也不是由我实现的,我只是改了一部分,主要还是博客大佬 ...
- numpy实现K-means聚类算法(可选是否已知类别数)和VQ-LBG矢量量化算法以及散点数据生成(含完整实验报告)
numpy实现K-means聚类算法(可选是否已知类别数)和VQ-LBG矢量量化算法以及散点数据生成(含完整实验报告) 实验报告完整,质量不低,加上你学校的封面就能交,也可用来交流学习: (20条消息 ...
- 机器学习实验报告1——线性模型,决策树,神经网络部分
机器学习前三次实验报告 1.线性模型 实验内容和部分实验结果: 实验1一元线性预测kaggle房价 实验2多元线性预测kaggle房价,选择多种特征进行组合,完成多元线性回归,并对比不同的特征组合,它 ...
- K均值聚类算法 实验报告
K-means实验报告和源代码Python实现,我的主页资源处下载.
- 合肥工业大学2020-2021学年《数据挖掘》实验报告(Python实现)
实验2的报告抄袭自报告,存粹是为了完成作业,不带任何商业目的.侵删! 文章目录 1 实验1:基于UCI soybean Dataset的分类任务 1.1 实验目的 1.2 实验任务 1.3 实验环 ...
最新文章
- android sqlite 中 创建表 不要使用 IF NOT EXISTS + TA...
- 【模板】RMQ问题—st表实现
- hdu 5212 : Code【莫比乌斯】
- iOS 自动引用计数和内存泄露
- python rfind函数用法_Python语法速查:字符串格式简单处理、子串查找与判断方法?...
- rewrite.php wordpress 缓存 固定连接,【转】Wordpress中文标签无法正常连接 - 完美解决方案...
- SQL搜索转为XML搜索
- rabbitmq-通配符模式
- python 中的 del 使用方法
- MNIST机器学习入门
- java模拟银行_java模拟银行交易系统程序
- Deep Learning with PyTorch 必看教程集(4本)
- php接口防止app重复提交,AOP防止接口重复提交
- python数据存储系列教程——xls文件的读写、追加(xlwt、xlwt、xlutils)
- 116. cURL 简介(2)
- 置为底层_C语言之C语言的底层操作
- android音乐播放器开发思路,手把手教你做音乐播放器(一)功能规划
- pde中微元分析法的主要思想_有限元法(FEM)
- 操作系统---IO设备
- vim插件配置安装与分享
热门文章
- 喜马拉雅回应股东变更:正常架构调整
- New Online Judge题解1006
- html5桌面录制,前端使用html5、ffmpeg实现录屏摄像等功能
- 信息系统项目管理师教程考点精讲之项目成本管理
- html input validator,BootstrapValidator 表单验证超详要怎么做?表单验证超详细教程 !...
- 情人节礼物怎么选?适合送给女朋友的数码好物
- 为Android Studio/IDEA、Eclipse手动安装GenyMotion插件
- 股权转让常见的筹划方法
- 〖Python 数据库开发实战 - MySQL篇㉔〗- 数据插入操作 - INSERT语句
- 固态硬盘的工作原理,固态硬盘掉电也能存储数据的原理