首页 > 编程语言 >统计分析 -- 聚类算法模型

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

时间:2022-08-23 17:24:20浏览次数:82  
标签:std 统计分析 means -- 矩阵 kmeans 算法 聚类

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

距离分析

聚类分析1.png

数据标准化

欧氏距离与量纲有关,因此,有时需要对数据进行预处理,
如标准化等。
在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聚类特点

聚类分析2.png

K-means++聚类算法

聚类分析3.png

SPSS软件使用

聚类分析spss.png

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聚类分析散点图');

title__k-means聚类分析散点图___.png

标签:std,统计分析,means,--,矩阵,kmeans,算法,聚类
From: https://www.cnblogs.com/delehub/p/16617091.html

相关文章

  • matlab读写文件操作
    把数组矩阵写入txt文件,并用逗号或空格隔开1、若需要用,分隔,则下述''用','替换。 dlmwrite('myfile.txt',A,'delimiter',''); 2、fileID=fopen('ma......
  • lombok @Builder注解
    https://blog.csdn.net/baidu_35085676/article/details/89193416?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%......
  • 利用context组件数据传递
     react的数据传递是从父级向子级传递的。通过props。如果是很多组件需要的数据,通过props传递会非常麻烦。这个时候可以使用context。context需要可以类似于store但是也......
  • (Ubuntu)Linux中的快捷键
    参考:Ubuntu常用指令和快捷键汇总2.ubuntu目录及其功能2.ubuntu界面端常用快捷键汇总终端窗口快捷键启动终端:Ctrl+Alt+T新建标签页:Ctrl+Shift+T关闭标签页:Ctrl+......
  • 把数字转换RMB形式
    方法1:varstr='12345679'letstrNew=str.replace(/\B(?=(?:\d{3})+\b)/g,',')//匹配单词边界替换为逗号方法2://定义一个反转函数反转函数......
  • 如何在 Linux 中扩展 XFS 根分
    最近在3A平台的平台下开通了Linux服务器,学习Linux服务器相关知识。在某些情况下,/分区在Linux中磁盘空间不足。即使压缩和删除旧的日志文件也无济于事,因此在这种情况下......
  • SQLSerServer简单触发器同步Bak表
    USE[ITL]GO/******Object:Trigger[dbo].[TR_LMS_Interface_Order_INSERT]ScriptDate:2022/8/2317:16:48******/SETANSI_NULLSONGOSETQUOTED_IDENTIF......
  • 网页UI设计软件:XD
    AdobeXD是一款用于设计Web和移动应用程序用户体验以及为其构建原型的基于矢量的工具。通过一款功能强大的工具,轻松地在线框、视觉设计、交互设计、原型制作、预览和共享......
  • EBS: Form Builder 10G CHECKBOX点击触发器
     在数据块(命名为REQ_QTY)添加一个CHECKBOX控件(命名为SELECT_FLAG),复选时的值=Y,未复选时的值=N; 需求复选框选中时,判断库存量是否大于等于需求量,是就允许被选中......
  • isNaN 与 Number.isNaN 区别
    isNaN()是判断是不是NaN本意是利用Number()方法,尝试将参数转换为Number类型,如果成功返回false,如果失败返回true; Number.isNaN()从外面往......