我需要用matlab写一段kmeans聚类
时间: 2023-06-12 22:03:54 浏览: 98
好的,下面是一个简单的 MATLAB 代码示例,用于执行 k-means 聚类:
```matlab
% 读入数据集
data = load('data.txt');
% 设置聚类数
k = 3;
% 执行 k-means 聚类
[idx, C] = kmeans(data, k);
% 绘制聚类结果
hold on;
scatter(data(idx==1,1), data(idx==1,2), 'r');
scatter(data(idx==2,1), data(idx==2,2), 'g');
scatter(data(idx==3,1), data(idx==3,2), 'b');
scatter(C(:,1), C(:,2), 'k', 'filled');
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids');
```
其中,`data` 是包含数据集的矩阵,每一行表示一个数据点;`k` 是指定的聚类数;`idx` 是指示每个数据点所属聚类的向量,`C` 是聚类中心的矩阵。代码执行后,会绘制出聚类结果的散点图,其中每个聚类用不同的颜色表示,聚类中心用黑色圆点表示。
相关问题
matlab手写实现kmeans聚类算法
以下是一个示例代码,实现了kmeans聚类算法:
```
% 生成随机数据
data = rand(50,2);
% 设置聚类数
k = 3;
% 随机初始化聚类中心
centers = data(randperm(size(data,1),k),:);
% 计算每个数据点到聚类中心的距离
distances = pdist2(data,centers);
% 执行聚类迭代
for i = 1:10
% 找到每个数据点所属的聚类
[~,labels] = min(distances,[],2);
% 更新聚类中心
for j = 1:k
centers(j,:) = mean(data(labels==j,:));
end
% 计算每个数据点到更新后的聚类中心的距离
distances = pdist2(data,centers);
end
% 可视化聚类结果
scatter(data(labels==1,1),data(labels==1,2),'r');
hold on;
scatter(data(labels==2,1),data(labels==2,2),'g');
scatter(data(labels==3,1),data(labels==3,2),'b');
scatter(centers(:,1),centers(:,2),'k','filled');
```
这段代码首先生成了50个随机数据点,然后设置聚类数为3。接着随机初始化了3个聚类中心,并计算每个数据点到聚类中心的距离。然后执行了10次聚类迭代,每次更新聚类中心并重新计算每个数据点到聚类中心的距离。最后可视化了聚类结果,将每个聚类用不同颜色的散点图表示,聚类中心用黑色圆点表示。
matlab kmeans聚类代码
下面是一个简单的 Matlab K-means 聚类代码示例:
```matlab
% 生成数据
data = [randn(100,2); randn(100,2)+5];
% 设置聚类数
k = 2;
% 运行 K-means 算法
[idx, C] = kmeans(data, k);
% 可视化聚类结果
figure;
scatter(data(:,1),data(:,2),[],idx,'filled');
hold on;
plot(C(:,1),C(:,2),'kx','LineWidth',2,'MarkerSize',10);
hold off;
```
这段代码首先生成一个带有两个簇的二维数据集,然后使用 `kmeans` 函数进行聚类。聚类结果存储在 `idx` 中,聚类中心存储在 `C` 中。最后,使用 `scatter` 函数可视化聚类结果,其中颜色表示聚类标签,黑色叉表示聚类中心。
阅读全文