层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。随着个人手机和网络的普及,手机已经基本成为所有人必须持有的工具。根据手机信号再地理空间的覆盖情况结合时间序列的手机定位数据可以完整的还原人群的现实活动轨迹从而得到人口空间分布于活动联系的特征信息商圈是现代市场中的重要企业活动空间,商圈划分的目的之一是为了研究潜在的顾客分布,以制定适宜的商业对策。现有数据集business_circle.xls。样本具有以下几个特征:基站编号、工作日上班时间人均停留时间、凌晨人均停留时间、周末人均停留时间、日均人流量,要求根据以上维度指标,对数据集进行层次聚类,并找出潜在的顾客分布规律,同时要求打印输出样本的类别标签,并画出谱系聚类图。
# 现有数据集circle.xls。样本具有以下几个特征:基站编号、工作日上班时间人均停留时间、凌晨人均停留时间、周末人均停留时间、日均人流量,
# 要求根据以上维度指标,对数据集进行层次聚类,同时要求打印输出样本的类别标签,并画出谱系聚类图。
import pandas as pd
import scipy.cluster.hierarchy as sch
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import MinMaxScaler
from matplotlib import pyplot as plt
# 读取数据
data = pd.read_excel(r'circle.xls',index_col='基站编号')
# print(data.head())
df = MinMaxScaler().fit_transform(data)
# 建立模型
model = AgglomerativeClustering(n_clusters=3)
model.fit(df)
data['类别标签'] = model.labels_
print(data.head())
# 画图
ss = sch.linkage(df,method='ward')
sch.dendrogram(ss)
plt.show()