1.数据读取及处理 2.初始化聚类中心(可从样本点中选取) 3.通过计算每个点到每个聚类中心的距离进行分类 4.计算每个类别对应点的坐标均值作为新的聚类中心点 5.重复3-4计算较优的聚类中心点 6.使用5中得到的聚类中心点对数据进行聚类并可视化结果,代码实现
时间: 2024-02-11 15:03:56 浏览: 64
好的,以下是Python实现K均值聚类算法的代码:
```python
# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('data.csv')
X = data.iloc[:, [0, 1]].values
# 定义K均值聚类函数
def kmeans(X, K, max_iters):
# 随机初始化聚类中心
centroids = X[np.random.choice(X.shape[0], K), :]
for i in range(max_iters):
# 计算每个点到聚类中心的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 将每个点分配到距离最近的聚类中心所在的簇中
labels = np.argmin(distances, axis=0)
# 计算每个簇的坐标均值作为新的聚类中心点
new_centroids = np.array([X[labels == k].mean(axis=0) for k in range(K)])
# 判断聚类中心是否变化
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return labels, centroids
# 调用K均值聚类函数
K = 3
max_iters = 100
labels, centroids = kmeans(X, K, max_iters)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
这段代码假设数据已经以csv格式存储,并且数据文件名为"data.csv",数据包含两个特征。K均值聚类函数"kmeans"接受三个参数:数据集X、簇的数量K和最大迭代次数max_iters。该函数返回两个值:每个数据点所属的簇的标签和最终的聚类中心点的坐标。最后,我们使用matplotlib库绘制散点图来展示聚类结果。
阅读全文