实验4 使用matlab编写 C均值聚类随机生成样本数据,X = [randn(100,2)*0.75+ones(100,2); randn(100,2)*0.5-ones(100,2)]; 绘制数据并且用Kmeans将其分为两类,并绘制出结果。
时间: 2023-12-17 16:03:22 浏览: 116
c均值_聚类算法_matlab_kmeans
5星 · 资源好评率100%
好的,让我来帮您回答这个问题。
您可以使用以下 Matlab 代码生成数据并绘制出来:
```matlab
% 生成数据
X = [randn(100, 2) * 0.75 + ones(100, 2); randn(100, 2) * 0.5 - ones(100, 2)];
% 绘制数据
scatter(X(:, 1), X(:, 2), 50);
```
这段代码首先生成了一个 200 行 2 列的随机数组,然后将前 100 行加上了一个向量 [1, 1],后 100 行减去了一个向量 [-1, -1],以达到聚类的效果。最后使用 `scatter` 函数绘制出了散点图。
接下来,您可以使用以下 Matlab 代码将数据分为两类,并绘制出分类结果:
```matlab
% 使用 KMeans 将数据分为两类
[idx, C] = kmeans(X, 2);
% 绘制分类结果
scatter(X(idx == 1, 1), X(idx == 1, 2), 50, 'r');
hold on;
scatter(X(idx == 2, 1), X(idx == 2, 2), 50, 'b');
scatter(C(:, 1), C(:, 2), 100, 'k', 'filled');
hold off;
```
这段代码首先使用 `kmeans` 函数将数据分为两类,并使用 `idx` 变量得到每个样本所属的类别。然后根据类别绘制出两个颜色不同的散点图,即为分类结果。最后使用 `scatter` 函数在图像上标出聚类中心。
希望这个回答能够帮助到您!
阅读全文