基于python,使用FCM聚类对527行2列的txt数据进行聚类分析,自动生成评估聚类结果的图表,绘制数据散点图和聚类中心。
时间: 2024-04-29 08:22:10 浏览: 197
FCM聚类算法
4星 · 用户满意度95%
首先,需要安装FCM聚类算法的Python库,可以使用以下命令进行安装:
```
pip install scikit-fuzzy
```
然后,可以使用以下代码读取数据并进行聚类分析:
```python
import numpy as np
import skfuzzy as fuzz
# 读取数据
data = np.loadtxt('data.txt')
# 定义聚类数量
ncenters = 5
# 进行FCM聚类
cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(data.T, ncenters, 2, error=0.005, maxiter=1000, init=None)
# 输出聚类中心
print(cntr)
# 输出每个数据点所属的聚类
cluster_membership = np.argmax(u, axis=0)
print(cluster_membership)
```
接下来,可以绘制数据散点图和聚类中心,代码如下:
```python
import matplotlib.pyplot as plt
# 绘制数据散点图
fig1, ax1 = plt.subplots()
ax1.set_title('Data Scatter Plot')
for i in range(ncenters):
ax1.plot(data[cluster_membership == i, 0], data[cluster_membership == i, 1], 'o', label='cluster{}'.format(i+1))
ax1.legend()
# 绘制聚类中心
fig2, ax2 = plt.subplots()
ax2.set_title('Cluster Centers')
for i in range(ncenters):
ax2.plot(cntr[i][0], cntr[i][1], 's', label='center{}'.format(i+1))
ax2.legend()
plt.show()
```
这段代码会生成两张图表,一张是数据散点图,展示每个数据点所属的聚类;另一张是聚类中心图,展示每个聚类的中心点。
最后,可以根据实际情况选择不同的评估指标来评估聚类结果,如轮廓系数(Silhouette Coefficient)和Calinski-Harabasz Index等。
阅读全文