kmeans算法是怎样调用的,输出的是什么 我有一堆数据样本想通过kmeans法分类并用图像显示结果 那个大哥帮

2025-05-13 01:32:21
推荐回答(2个)
回答(1):

x = [1,6,9,13,2,8,7,4,11,5,3,10,12];

numGroups = 4; % 组的数目
xMax = max(x);
xMin = min(x);
boundries = xMin + (0:numGroups) * (xMax - xMin) / (numGroups - 1); % 组的边界

xGroup = zeros(size(x)); % 初始化
for group = 1:numGroups
loc = (x >= boundries(group)) & (x <= boundries(group + 1)); %在这个组的书的坐标
xGroup(loc) = group;
end

结果存在xGroup里

补充:
如果要按照你的那样输出,可以改成这样:
x = [1,6,9,13,2,8,7,4,11,5,3,10,12];
GroupName = ['A','B','C','D'];

numGroups = length(GroupName); % 组的数目
xMax = max(x);
xMin = min(x);
boundries = xMin + (0:numGroups) * (xMax - xMin) / (numGroups - 1); % 组的边界

xGroup = zeros(size(x)); % 初始化
for group = 1:numGroups
loc = (x >= boundries(group)) & (x <= boundries(group + 1)); %在这个组的书的坐标
xGroup(loc) = group;
end

xGroupName = GroupName(xGroup);
for ii = 1:length(x)
fprintf('%d : %s\n', x(ii), xGroupName(ii));
end

回答(2):

找本简单的书看看,kmeans算法比较简单,应该可以看懂,网络上及matlab自带的函数都有kmeans,输出为各个聚类的类中心,及每个样本属于哪个聚类,具体因人而异