一维k-means的matlab编程
时间: 2024-06-15 14:03:24 浏览: 181
新手4二维聚类算法代码.txt
一维k-means是一种基于距离的聚类算法用于将一维数据集划分为k个不同的簇。下面是一维k-means的Matlab编程示例:
```matlab
% 生成一维数据集
data = [1, 2, 3, 4, 10, 11, 12, 20, 21, 22];
% 设置聚类数目
k = 2;
% 随机初始化聚类中心
centers = datasample(data, k, 'Replace', false);
% 迭代更新聚类中心
maxIter = 100;
for iter = 1:maxIter
% 计算每个样本与聚类中心的距离
distances = abs(data - centers');
% 分配样本到最近的聚类中心
[~, labels] = min(distances, [], 2);
% 更新聚类中心为每个簇的均值
for i = 1:k
centers(i) = mean(data(labels == i));
end
end
% 打印聚类结果
disp(labels);
% 打印聚类中心
disp(centers);
```
这段代码首先生成了一个一维数据集`data`,然后设置了聚类数目`k`。接着,通过随机选择`k`个样本作为初始聚类中心。然后,进行迭代更新,计算每个样本与聚类中心的距离,并将样本分配到最近的聚类中心。最后,更新聚类中心为每个簇的均值。代码最后打印了聚类结果和聚类中心。
阅读全文