运营商基站可以收集到每个基站附近使用频率信息,包括:工作日上班时间人均停留时间、凌晨人均停留时间、周末人均停留时间、日均人流量这4个指标信息。对应的数据文件是“层次聚类.csv”。现在需要对这份数据进行聚类,将这些基站划分为不同的应用等级。 解决思路是: 1.分析数据,进行数据预处理。使用PCA方法将数据四个特征降为为两个特征; 2.将降维后的数据用散点图展现,根据散点图的展示效果确定聚类后拟采用簇的数量; 3.使用层次聚类方法,进行聚类; 4.输出聚类效果散点图,输出聚类效果竖结构图形。使用代码完成
时间: 2023-07-16 19:17:07 浏览: 71
以下是Python代码实现:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from scipy.cluster.hierarchy import dendrogram, linkage
# 读取数据
data = pd.read_csv('层次聚类.csv', header=None)
data.columns = ['weekday_worktime', 'midnight_worktime', 'weekend_worktime', 'daily_flow']
# 数据预处理,使用PCA降维为两个特征
pca = PCA(n_components=2)
new_data = pca.fit_transform(data)
# 绘制散点图
plt.scatter(new_data[:, 0], new_data[:, 1])
plt.xlabel('PCA feature 1')
plt.ylabel('PCA feature 2')
plt.show()
# 使用层次聚类方法进行聚类
Z = linkage(new_data, method='ward')
# 绘制竖结构图形
plt.figure(figsize=(10, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(Z)
plt.show()
# 输出聚类效果散点图
plt.scatter(new_data[:, 0], new_data[:, 1], c=Z[:, 2], cmap='rainbow')
plt.xlabel('PCA feature 1')
plt.ylabel('PCA feature 2')
plt.show()
# 输出聚类效果竖结构图形
plt.figure(figsize=(10, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(Z, leaf_rotation=90, leaf_font_size=8)
plt.show()
```
这段代码中,首先读取了数据文件,并使用PCA将四个特征降维为两个特征。然后绘制了降维后的数据的散点图,并根据散点图的展示效果确定聚类簇的数量。接着使用层次聚类方法进行聚类,并绘制了聚类效果的竖结构图形和散点图。最后,输出了聚类效果的竖结构图形和散点图。
阅读全文