Matlab聚类分析(Kmeans)

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

目录

  • 前言
  • 一、原始数据
  • 二、数据处理与结果输出
    • 1.标准化与提取
    • 2.可视化
    • 3.簇数判别
    • 4.最终输出
  • 总结


前言

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


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

一、原始数据

数据的导入,利用Matlab导入Excel数据,生成操作性更高的脚本用于本次的测试。
Matlab聚类分析(Kmeans)_第1张图片
在导入数据的过程中,筛选去掉不需要的冗余数据,生成对应的脚本文件
Matlab聚类分析(Kmeans)_第2张图片
至此完成数据的初步导入

二、数据处理与结果输出

1.标准化与提取

数据提取与标准化逻辑
Matlab聚类分析(Kmeans)_第3张图片
采取的是最大最小值标准化方式

标准化代码如下:

%% 函数区域

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.可视化

原始数据可视化
Matlab聚类分析(Kmeans)_第4张图片
结果如下:
Matlab聚类分析(Kmeans)_第5张图片

3.簇数判别

由于不确定数据可以划分的组数,利用Calinski-Harabasz指数,确定最佳的分类组数
Matlab聚类分析(Kmeans)_第6张图片
Matlab聚类分析(Kmeans)_第7张图片
确定最终组数为3

4.最终输出

对分类结果进行输出
Matlab聚类分析(Kmeans)_第8张图片

下图所示为分类结果
Matlab聚类分析(Kmeans)_第9张图片


总结

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

你可能感兴趣的:(matlab,聚类)