Matlab聚类分析(Kmeans)

Matlab聚类分析(Kmeans)利用Kemans对故障样本进行简单的聚类工作,通过Calinski-Harabasz指数确定最佳的分类组数

提示:本文为记录学习聚类分析的一个过程,仅供参考,有不足之处还望提出


前言

本次样本中的片段数据涉及到多个故障原因,目的在于通过聚类的方式,将样本中为同一因素导致的故障数据筛选出来。
源码+测试样本


提示:以下是本篇文章正文内容,下面案例仅供参考

一、原始数据

数据的导入,利用Matlab导入Excel数据,生成操作性更高的脚本用于本次的测试。
数据导入
在导入数据的过程中,筛选去掉不需要的冗余数据,生成对应的脚本文件
脚本文件
至此完成数据的初步导入

二、数据处理与结果输出

1.标准化与提取

数据提取与标准化逻辑
标准化
采取的是最大最小值标准化方式

标准化代码如下:

%% 函数区域

function [normalized_data] = normalize(source_data, kind)
% 数据的标准化(归一化)处理
% 参数 source_data 可用格式的源数据
% 参数 kind 代表何种归一化方式, 默认为1. 1代表Min-Max标准化,2代表Z-score标准化.
% 返回归一化后的数据

if nargin < 2 % 如果参数少于2,默认进行Min-Max标准化
    kind = 1;
end

[m, n]  = size(source_data);
normalized_data = zeros(m, n);

%% Min-Max标准化(Min=0,Max=1)
if kind == 1
    for i = 1:n
        ma = max( source_data(:, i) ); % Matlab中变量名不宜和函数名相同,所以不用max、min、mean等变量名
        mi = min( source_data(:, i) );
        normalized_data(:, i) = ( source_data(:, i)-mi ) / ( ma-mi );
    end
end
%% Z-score标准化
if kind == 2
    for i = 1:n
        mea = mean( source_data(:, i) );
        st = std( source_data(:, i) );
        normalized_data(:, i) = ( source_data(:, i)-mea ) / st;
    end
end
end

2.可视化

原始数据可视化
可视化
结果如下:
数据分布

3.簇数判别

由于不确定数据可以划分的组数,利用Calinski-Harabasz指数,确定最佳的分类组数
簇数判别
图形输出
确定最终组数为3

4.最终输出

对分类结果进行输出
分类代码

下图所示为分类结果
输出图片


总结

本文通过Kmeans的方法对故障类型进行一个简单的聚类,利用Calinski-Harabasz指数判断数据的最佳分类组数,并对最终的结果进行简单的可视化。
源码+测试样本

今天的文章Matlab聚类分析(Kmeans)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32448.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注