python读取txt文件,用自己写的k均值算法进行聚类并进行可视化表示初始中心点
时间: 2024-05-10 11:17:56 浏览: 95
python实现K均值聚类算法
可以使用Python的numpy和matplotlib库来实现读取txt文件、聚类和可视化等功能。下面是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 读取txt文件
data = np.loadtxt('data.txt')
# 自己写的k均值算法
def kmeans(data, k):
# 随机选择k个初始中心点
centers = data[np.random.choice(len(data), k, replace=False)]
while True:
# 计算每个样本点到各个中心点的距离
distances = np.sqrt(((data - centers[:, np.newaxis])**2).sum(axis=2))
# 找出距离最近的中心点
labels = distances.argmin(axis=0)
# 更新中心点
new_centers = np.array([data[labels == i].mean(axis=0) for i in range(k)])
# 如果中心点不再变化,退出循环
if np.allclose(centers, new_centers):
break
centers = new_centers
return labels, centers
# 聚类
labels, centers = kmeans(data, 3)
# 可视化表示初始中心点和聚类结果
plt.scatter(data[:, 0], data[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='*', s=200, color='r')
plt.show()
```
其中,假设txt文件中的数据格式为两列,每一行代表一个样本点。在代码中,我们首先使用`np.loadtxt()`函数读取txt文件中的数据,并将其存储在一个numpy数组中。然后,我们使用自己编写的k均值算法对数据进行聚类,并得到聚类结果和中心点。最后,我们使用matplotlib库将原始数据和聚类结果可视化出来,其中用红色的星号表示初始中心点。
阅读全文