1.随机生成样本数据,X = [randn(100,2)*0.75+ones(100,2); randn(100,2)*0.5-ones(100,2)]; 绘制数据并且用Kmeans将其分为两类,并绘制出结果。
84浏览 · 2023-12-17 15:03:22
好的,我来解答这个问题。首先,你给出的是 MATLAB [代码](https://geek.csdn.net/educolumn/1572ef9b473b4e00f6b2bf6d428b7c27?spm=1055.2569.3001.10083),我会按照 MATLAB 的语法来回答。
```matlab
% 生成数据
X = [randn(100,2)*0.75+ones(100,2); randn(100,2)*0.5-ones(100,2)];
% 绘制数据
figure;
scatter(X(:,1), X(:,2));
title('样本数据');
% 使用 Kmeans 将其分为两类
[idx, C] = kmeans(X, 2);
% 绘制结果
figure;
scatter(X(idx==1,1), X(idx==1,2));
hold on;
scatter(X(idx==2,1), X(idx==2,2));
scatter(C(:,1), C(:,2), 'x', 'LineWidth', 3, 'MarkerEdgeColor', 'r');
title('Kmeans 分类结果');
legend('第一类', '第二类', '聚类[中心](https://geek.csdn.net/educolumn/25c0213845468cc350845cfcac056868?spm=1055.2569.3001.10083)');
以上[代码](https://geek.csdn.net/educolumn/1572ef9b473b4e00f6b2bf6d428b7c27?spm=1055.2569.3001.10083)的解释如下:
- 第一行生成样本数据,其中前 100 个数据点为高斯分布,均值为 (1,1),标准差为 0.75,后 100 个数据点为高斯分布,均值为 (-1,-1),标准差为 0.5。
- 第四行绘制样本数据的散点图。
- 第七行使用 Kmeans 将样本数据分为两类,其中 idx 是每个数据点所属的类别,C 是聚类[中心](https://geek.csdn.net/educolumn/25c0213845468cc350845cfcac056868?spm=1055.2569.3001.10083)。
- 第十行绘制 Kmeans 分类结果的散点图,其中每个类别用不同的颜色表示,聚类[中心](https://geek.csdn.net/educolumn/25c0213845468cc350845cfcac056868?spm=1055.2569.3001.10083)用红色叉号表示。
相关问题
代码实现如下:
```python
```
好的,让我来帮您回答这个问题。
首先,您可以使用以下代码生成数据并绘制出来:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成数据
X = np.vstack((np.random.randn(100, 2) * 0.75 + np.ones((100, 2)),
np.random.randn(100, 2) * 0.5 - np.ones((100, 2))))
# 绘制数据
plt.scatter(X[:, 0], X[:, 1], s=50)
plt.show()