K-means聚类的Python代码
时间: 2023-09-05 07:05:15 浏览: 91
K-means聚类,手撕代码、包括数据生成、模型展示
5星 · 资源好评率100%
### 回答1:
K-means聚类是一种用于将数据分组的机器学习算法,它可以帮助你从数据中发现有趣的模式。Python代码实现K-means聚类的步骤包括:1.导入必要的库;2.加载数据;3.初始化聚类中心;4.在数据集上运行K-means;5.计算每个类中心的更新;6.可视化聚类结果。
### 回答2:
K-means是一种常用的聚类算法,它的实现可以使用Python语言。下面是一个简单的K-means聚类的Python代码的示例:
```python
import numpy as np
def k_means(X, k, max_iters):
# 初始化k个质心
centroids = X[np.random.choice(range(X.shape[0]), k, replace=False)]
for _ in range(max_iters):
# 计算每个样本到各个质心的距离
distances = np.linalg.norm(X[:, np.newaxis] - centroids, axis=-1)
# 根据距离将样本分配到最近的质心
labels = np.argmin(distances, axis=-1)
# 更新质心为每个簇中样本的均值
new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(k)])
# 如果质心不再改变,则提前退出循环
if np.all(new_centroids == centroids):
break
centroids = new_centroids
return labels, centroids
# 示例用法
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
k = 2
max_iters = 100
labels, centroids = k_means(X, k, max_iters)
print("聚类结果:", labels)
print("质心坐标:", centroids)
```
上述代码首先导入了`numpy`库,然后定义了一个`k_means()`函数,该函数接收输入数据`X`、簇数`k`和最大迭代次数`max_iters`作为参数。在函数内部,首先随机选择k个质心,然后通过迭代计算和更新样本与质心之间的距离,将样本分配到最近的质心,最后更新每个簇的质心为该簇中样本的均值。聚类过程会在达到最大迭代次数或质心不再改变时提前退出。最后,函数返回样本的簇标签和质心坐标。
代码末尾给出了一个示例用法,其中将一个二维数据集`X`进行聚类,设置簇数为2,最大迭代次数为100。输出结果为每个样本的簇标签和质心坐标。
综上所述,以上是一个简单的实现K-means聚类的Python代码示例。
### 回答3:
K-means是一种常用的聚类算法,用于将数据集分成不同的簇。下面是一个使用Python编写的K-means聚类的简单代码:
```python
import numpy as np
def k_means(X, k, max_iters=100):
# 初始化聚类中心
centroids = X[np.random.choice(range(len(X)), size=k, replace=False)]
# 迭代更新聚类中心
for _ in range(max_iters):
# 计算样本与聚类中心的距离
distances = np.linalg.norm(X[:, np.newaxis] - centroids, axis=2)
# 根据距离将样本分配到最近的聚类中心
labels = np.argmin(distances, axis=1)
# 更新聚类中心为各簇样本的均值
new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(k)])
# 若聚类中心不再变化,则结束迭代
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return labels, centroids
# 示例用法
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
k = 2
labels, centroids = k_means(X, k)
print("聚类结果:", labels)
print("聚类中心:", centroids)
```
这个代码首先随机初始化了k个聚类中心,然后进行迭代更新聚类中心的过程。在每次迭代中,首先计算所有样本与聚类中心的距离,然后根据距离将样本分配到最近的聚类中心。接下来,更新聚类中心为各簇样本的均值,并判断聚类中心是否改变,若不再变化,则结束迭代。最后,返回每个样本所属的聚类标签和聚类中心。以上是一个简单的K-means聚类的Python代码。
阅读全文