k均值聚类代码matlab
时间: 2023-10-07 17:05:49 浏览: 127
以下是一个简单的k均值聚类的MATLAB代码示例:
```matlab
% 准备数据
data = [1 1; 1 2; 2 1; 4 4; 4 5; 5 4];
% 设置聚类数量
k = 2;
% 初始化聚类中心
centroids = data(randperm(size(data,1), k), :);
% 迭代更新聚类
maxIterations = 10;
for iter = 1:maxIterations
% 计算每个样本与聚类中心的距离,并选择最近的聚类中心
distances = pdist2(data, centroids);
[~, labels] = min(distances, [], 2);
% 更新聚类中心为各聚类的均值
for i = 1:k
centroids(i, :) = mean(data(labels == i, :));
end
end
% 打印最终的聚类结果
disp(labels);
```
这是一个简单的k均值聚类实现。首先,输入数据存储在`data`变量中。然后,我们选择要聚类的数量`k`。接下来,我们随机初始化`k`个聚类中心。然后,我们迭代地进行以下步骤:计算每个样本与聚类中心的距离,并选择最近的聚类中心;更新聚类中心为各聚类的均值。最后,输出每个样本的聚类标签。
请注意,该代码示例仅为了说明目的,并不包含完整的错误处理和优化措施。在实际使用中,建议进行更全面的错误处理和性能优化。
相关问题
k均值聚类算法matlab
k均值聚类算法是一种常见的聚类算法,可以使用Matlab进行实现。以下是一份简单的Matlab代码实现k均值聚类算法:
```matlab
% 输入数据
data = [1, 1; 1.5, 2; 3, 4; 5, 7; 3.5, 5; 4.5, 5; 3.5, 4.5];
K = 2; % 聚类数
[m, n] = size(data); % 数据维度和数据点个数
% 初始化聚类中心
center = zeros(K, n);
index = randperm(m, K);
for i = 1:K
center(i, :) = data(index(i), :);
end
% 迭代求解聚类中心
max_iter = 100; % 最大迭代次数
iter = 0;
while iter < max_iter
iter = iter + 1;
% 分配样本到聚类中心
cluster = cell(K, 1);
for i = 1:m
dist = zeros(K, 1);
for j = 1:K
dist(j) = norm(data(i, :) - center(j, :));
end
[~, idx] = min(dist);
cluster{idx} = [cluster{idx}; data(i, :)];
end
% 更新聚类中心
for i = 1:K
center(i, :) = mean(cluster{i}, 1);
end
end
% 可视化结果
figure;
hold on;
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k'];
for i = 1:K
scatter(cluster{i}(:, 1), cluster{i}(:, 2), 36, colors(i), 'filled');
end
scatter(center(:, 1), center(:, 2), 100, 'k', 'filled', 'd');
title('k-means clustering');
```
代码中的输入数据是一个二维数组,每一行代表一个数据点,K表示聚类数。该代码使用随机选择的方式初始化聚类中心,然后通过迭代不断更新聚类中心和分配样本到聚类中心,最终得到聚类结果并可视化。
k均值聚类算法 matlab
k均值聚类算法是一种常见的无监督学习算法,可以用于将一组数据分成k个不同的簇。在Matlab中,可以使用自带的kmeans函数实现该算法。下面是一个简单的Matlab代码示例:
```
% 生成一组随机数据
data = rand(100,2);
% 将数据分成3个簇
k = 3;
% 使用kmeans函数进行聚类
[idx, C] = kmeans(data, k);
% 可视化聚类结果
scatter(data(:,1), data(:,2), 10, idx, 'filled');
hold on;
scatter(C(:,1), C(:,2), 50, 'k', 'filled');
```
在上述示例中,我们首先生成了一组随机数据,然后使用kmeans函数将数据分成了3个簇。最后,我们将聚类结果可视化出来,其中不同的颜色表示不同的簇,黑色的点表示每个簇的中心点。
阅读全文