提示:本文为记录学习聚类分析的一个过程,仅供参考,有不足之处还望提出
目录
- 前言
- 一、原始数据
- 二、数据处理与结果输出
- 1.标准化与提取
- 2.可视化
- 3.簇数判别
- 4.最终输出
- 总结
前言
本次样本中的片段数据涉及到多个故障原因,目的在于通过聚类的方式,将样本中为同一因素导致的故障数据筛选出来。
源码+测试样本
提示:以下是本篇文章正文内容,下面案例仅供参考
一、原始数据
数据的导入,利用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 == 1for i = 1:nma = 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 == 2for i = 1:nmea = 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指数判断数据的最佳分类组数,并对最终的结果进行简单的可视化。
源码+测试样本