% 一维数组聚类,找出规模最大的类
clc;clear all;close all;
% 待聚类的一维数据
data_1 = 20*ones(15,1) + randn(15,1);
data_2 = 5*ones(5,1) + randn(5,1);
data_3 = 15*ones(5,1) + randn(5,1);
data_4 = 50*ones(2,1) + randn(2,1);
data_5 = 40*ones(3,1) + randn(3,1);
data = [data_1' data_2' data_3' data_4' data_5'];
% 随机化数组分布
index = randperm(length(data));
data = data(index);
figure(1);bar(data);
% 对数组进行排序
data_sort = sort(data);
% 记录后者对前者的增长比例 在5%以下反比即衰减基本一致 要求不严格可以混用
data_ratio = zeros(1,length(data_sort))
data_ratio(1) = 1;% 第一个元素自比为1
for i = 2:1:length(data_sort)
data_ratio(i) = data_sort(i)./data_sort(i-1);
end
% 设定限制比例
r_limit = 1.05;
% 记录最大类元素位置
i = 1;j = 0;max_element = 1;
i_max = 1;j_max = 0;
for k = 1:1:length(data_sort)
if(data_ratio(k)<=r_limit)
j = j + 1;
if((j-i+1)>=max_element)
max_element = j-i+1;
i_max = i;
j_max = j;
end
else
i = k;j = k;
end
end
figure(2);bar(data_sort);
max_class_value = data_sort(i_max:j_max)
[机器学习]一维聚类:最大类计算
最新推荐文章于 2023-12-08 00:31:47 发布