一、问题概述
手机用户在使用短信、通话等业务、开关机、位置更新等的时候均产生定位数据,每条定位数据均包含了手机用户所处基站的编号、时间和唯一标识用户的EMASI号等。
将每个基站覆盖区域视为一个商圈,通过归纳基站覆盖区域的人流量和人均停留时间等特征,即可划分出不同类别的商圈。然后挑选出高价值商圈,并结合商圈用户活动特点,有针对性开展促销等活动。
现在共有431名用户的定位信息,存于Excel中,包含用户编号以及如下考查指标:
1.人均流量:反应商圈的大致用户密度
2.工作日上班时段人均停留时间:用以识别上班人群集中的商圈
3.凌晨人均停留时间:用以识别住宅区居民集中的商圈
4.周末人均停留时间:用以识别周末时段人群集中的商圈
分析主要分两步,首先用tableau进行可视化分析,了解各基站(商圈)的大致情况;然后通过机器学习,采用聚类算法,对各商圈进行进一步的标识。
二、初步分析
从以下图中,可以看到各商圈的日均人流量和各时段的停留时间情况。其中在人均停留时间的三张图中,均有明显的断层现象,我们可以初步判定,断层处即为商圈的类别划分点,断层左边的商圈表示该时段人均停留时间长,右边表示停留时间短。
三、聚类分析
由于各个属性之间的数量级相差较大,在进行聚类前,需要进行离差标准化处理,即将各属性数据按比例缩放到一定范围,得到建模数据。
代码如下:
import pandas as pd import sklearn.preprocessing as prc import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 data=pd.read_excel("../data/business_circle.xls") # 读取数据 pm=prc.MinMaxScaler() data_rd=pm.fit_transform(data.ix[:,1:]) # 数据标准化 data_rd= pd.DataFrame(data_rd,columns=data.columns[1:]) # 标准化后的数据重新转为df格式
采用层次聚类算法对建模数据进行聚类,画出谱系聚类图 。聚类类别数取3 ,根据聚类结果,绘制不同类别的特征折线图,并输出结果存入excel。
代码如下:
图片: