数学建模统计分析 -- 聚类算法模型

简介: 数学建模统计分析 -- 聚类算法模型

统计分析 -- 聚类算法模型

距离分析

在这里插入图片描述

数据标准化

欧氏距离与量纲有关,因此,有时需要对数据进行预处理,
如标准化等。
在MATLAB中的命令是zscore,调用格式

Z = zscore(X)
输入X表示N行p列的原始观测矩阵,行为个体,列为指标。

输出Z为X的标准化矩阵:
Z = (X–ones(N,1)*mean(X)) ./(ones(N,1)* std(X)),

mean(X)为行向量,表示各个指标的均值估计,
std(X)表示指标的标准差估计。./表示对应元素相除,
ones(N,1)表示元素全为1的行向量,向量的长度为N。

K-means聚类

K-means聚类的算法流程:

  1. 指定需要划分的簇的个数K值(类的个数)
  2. 随机地选择K个数据对象作为初始的聚类中心(不一定要是我们的样本点)
  3. 计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
  4. 调整新类并且重新计算出新类的中心;
  5. 循环步骤3和4,看中心是否收敛(不变)如果敛或达到迭代次数则停止循环;
  6. 结束。

K-means聚类特点

在这里插入图片描述

K-means++聚类算法

在这里插入图片描述

SPSS软件使用

在这里插入图片描述

code

%% 
% K-means 算法MATLAB实现
%-------------------------------------------------------------
%{
利用Matlab软件中的命令: kmeans,可以实现k-means聚类
对于要处理的数据 构造矩阵,矩阵X的每一行为每个个体的实际数据,每一列都是不同的指标
如果提供的数据不是按照规范模式,需要进行矩阵转置
x=y';     %矩阵x的行为个体,列为指标  
[a,b]=kmeans(x,2)  %分为2类,输出:  a为聚类的结果,b为聚类重心, 每一行表示一个类的重心
使用kmeans进行处理 
%}
%% 数据准备和初始化
clc
clear
load kdata.mat


[a,b]=kmeans(x,3);  %%分为3类输出
x1=x(find(a==1),:)   %提取第1类里的样品
x2=x(find(a==2),:)   %提取第2类里的样品
x3=x(find(a==3),:)   %提取第3类里的样品
sd1=std(x1)
sd2=std(x2)  
sd3=std(x3)  % 分别计算第1类和第2类第3类的标准差
plot(x(a==1,1),x(a==1,2),'r.',x(a==2,1),x(a==2,2),'b.',x(a==3,1),x(a==3,2),'g.','MarkerSize',10)  %作出聚类的散点图
title('k-means聚类分析散点图');

在这里插入图片描述

聚类分析--谱系分析

研究聚类的MATLAB实现,实现步骤大致如下:

  1. 输入数据矩阵,注意行与列的实际意义;
  2. 计算各样品之间的距离(行?列?)
    欧氏距离:d=pdist(A) % 注意计算A中各行之间的距离;
    绝对距离:d= pdist(A,'cityblock');
    明氏距离:d=pdist(A,'minkowski',r); % r要填上具体的实数;
    方差加权距离:d= pdist(A,'seuclid');
    马氏距离:d= pdist(A,'mahal');
    注意:以上命令输出的结果是一个行向量
  3. 选择不同的类间距离进行聚类
  4. 作出谱系聚类图
  5. 根据分类数目,输出聚类结果
试利用调查资料对16个地区进行聚类分析。

下表是我国16个地区农民1982年支出情况的抽样调查的汇总资料,每个地区都调查了反映每人平均生活消费支出情况的六个指标。

谱系聚类图
a=load('ho2.txt');%导入数据

d1=pdist(a);% 此时计算出各行之间的欧氏距离,

z1=linkage(d1);

z2=linkage(d1,'complete');

z3=linkage(d1,'average');

z4=linkage(d1,'centroid');

z5=linkage(d1,'ward');

R=[cophenet(z1,d1),cophenet(z2,d1),cophenet(z3,d1),cophenet(z4,d1),cophenet(z5,d1)]

H= dendrogram(z3)

T=cluster(z3,4)  %cluster 创建聚类,并作出谱系图

set(get(gca, 'Title'), 'String', '聚类分析-谱系聚类图');
k-means聚类分析散点图
[a,b]=kmeans(x,4);  %%分为4类输出
x1=x(find(a==1),:)   %提取第1类里的样品
x2=x(find(a==2),:)   %提取第2类里的样品
x3=x(find(a==3),:)   %提取第3类里的样品
x4=x(find(a==4),:)   %提取第3类里的样品
sd1=std(x1)
sd2=std(x2)  
sd3=std(x3)  % 分别计算第1类和第2类第3类的标准差
sd4=std(x4)  % 分别计算第1类和第2类第3类的标准差
plot(x(a==1,1),x(a==1,2),'r.',x(a==2,1),x(a==2,2),'b.',x(a==3,1),x(a==3,2),'g.',x(a==4,1),x(a==4,2),'y.','MarkerSize',15)  %作出聚类的散点图
title('k-means聚类分析散点图');

在这里插入图片描述

linkage函数
调用格式:Z=linkage(Y,‘method’)
输入值说明:Y为pdist函数返回的M*(M-1)/2个元素的行向量,用‘method’参数指定的算法计算系统聚类树。
method:可取值如下:
‘single’:最短距离法(默认);
‘complete’:最长距离法;
‘average’:未加权平均距离法;
‘weighted’: 加权平均法;
‘centroid’:质心距离法;
‘median’:加权质心距离法;
‘ward’:内平方距离法(最小方差算法)
返回值说明:Z为一个包含聚类树信息的(m-1)×3的矩阵,其中前两列为索引标识,表示哪两个序号的样本可以聚为同一类,第三列为这两个样本之间的距离。另外,除了M个样本以外,对于每次新产生的类,依次用M+1、M+2、…来标识
目录
相关文章
|
28天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
90 4
|
13天前
|
算法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
|
13天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
21天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
1月前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
89 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
89 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
19天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。