能用matlab写出k-means聚类算法吗
时间: 2023-09-29 20:10:09 浏览: 77
当然可以!以下是 MATLAB 实现 k-means 聚类算法的示例代码:
```matlab
% 生成一些随机数据
data = rand(100, 2);
% 设置聚类数目
k = 3;
% 初始化聚类中心
centers = data(randperm(size(data, 1), k), :);
% 迭代聚类
for i = 1:100
% 计算每个数据点到聚类中心的距离
distances = pdist2(data, centers);
% 确定每个数据点所属的聚类
[~, labels] = min(distances, [], 2);
% 更新聚类中心
for j = 1:k
centers(j, :) = mean(data(labels == j, :), 1);
end
end
% 可视化聚类结果
scatter(data(:, 1), data(:, 2), 10, labels, 'filled');
```
在此示例中,我们首先生成了一些随机数据,然后设置了聚类数目为 3。接着我们初始化了聚类中心,并进行了 100 次迭代聚类。最后,我们将聚类结果可视化出来。
相关问题
用matlab写k-means聚类算法
以下是用Matlab实现k-means聚类算法的示例代码:
% 生成数据集
rng(1);
data = [randn(100,2)*0.75+ones(100,2);
randn(100,2)*0.5-ones(100,2)];
% 初始化聚类中心
k = 2;
centroids = data(randperm(size(data,1),k),:);
% 迭代聚类
for iter = 1:10
% 计算每个点所属的聚类
[~,cluster] = min(pdist2(data,centroids,'euclidean'),[],2);
% 更新聚类中心
for i = 1:k
centroids(i,:) = mean(data(cluster==i,:),1);
end
end
% 绘制结果
figure;
scatter(data(cluster==1,1),data(cluster==1,2),'r');
hold on;
scatter(data(cluster==2,1),data(cluster==2,2),'b');
scatter(centroids(:,1),centroids(:,2),'kx');
legend('Cluster 1','Cluster 2','Centroids');
title('K-means Clustering');
在matlab上用k-means聚类算法聚类鸢尾花数据集
好的,以下是在MATLAB上使用k-means聚类算法聚类鸢尾花数据集的步骤:
1. 加载鸢尾花数据集
```
load fisheriris
```
2. 提取需要聚类的特征
```
X = meas(:, 3:4);
```
这里我们选择花瓣的长度和宽度作为聚类的特征。
3. 进行k-means聚类
```
k = 3; % 设置聚类的类别数
[idx, C] = kmeans(X, k);
```
聚类的结果保存在`idx`中,每个样本所属的类别编号;聚类中心保存在`C`中。
4. 可视化聚类结果
```
figure;
gscatter(X(:,1), X(:,2), idx);
hold on;
plot(C(:,1), C(:,2), 'k*', 'MarkerSize', 10);
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids');
```
这里使用了`gscatter`函数将每个样本按照聚类结果进行可视化,使用`plot`函数将聚类中心标出来。
完整代码如下:
```
load fisheriris
X = meas(:, 3:4);
k = 3; % 设置聚类的类别数
[idx, C] = kmeans(X, k);
figure;
gscatter(X(:,1), X(:,2), idx);
hold on;
plot(C(:,1), C(:,2), 'k*', 'MarkerSize', 10);
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids');
```
阅读全文
相关推荐













