请用具体的数据,利用K-mans的算法分析,给出代码示例
时间: 2023-12-03 07:43:58 浏览: 51
K-means 算法是一种聚类算法,可以将数据集分成 K 个不同的类别。
以下是使用 Python 实现 K-means 算法的示例代码:
```python
import numpy as np
def kmeans(X, k, max_iters=100):
m, n = X.shape
centroids = X[np.random.choice(m, k, replace=False), :]
for i in range(max_iters):
# 计算每个样本距离每个聚类中心的距离
distances = np.linalg.norm(X[:, np.newaxis, :] - centroids, axis=2)
# 找到距离最近的聚类中心
labels = np.argmin(distances, axis=1)
# 更新聚类中心
for j in range(k):
centroids[j, :] = np.mean(X[labels == j, :], axis=0)
return labels, centroids
```
其中,`X` 是一个 `m x n` 的矩阵,表示数据集,`k` 表示需要聚类的类别数,`max_iters` 表示最大迭代次数。函数返回两个值,`labels` 表示每个样本所属的类别,`centroids` 表示每个聚类的中心。
以下是一个使用示例:
```python
import matplotlib.pyplot as plt
# 生成数据集
np.random.seed(0)
X = np.vstack([np.random.randn(10, 2) + i * 10 for i in range(3)])
# 聚类
labels, centroids = kmeans(X, k=3)
# 绘制聚类结果
colors = ['r', 'g', 'b']
for i in range(3):
plt.scatter(X[labels==i, 0], X[labels==i, 1], c=colors[i])
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='k')
plt.show()
```
这个示例生成了一个包含 30 个样本的数据集,每个样本有两个特征。使用 K-means 算法将数据集分成 3 个类别,并绘制聚类结果。