基站数据分析商圈价值——笔记

根据移动通信运营商基站历史定位数据分析人流特征规律,识别不同类型的商圈,判断是否适合进行促销。

#导入所需类库
import pandas as pd
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import linkage,dendrogram
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt

读取数据

#读取原始数据
data = pd.read_excel('data/business_circle.xls', index_col = u'基站编号') 
#展示前五条记录
data.head()
		工作日上班时间人均停留时间	凌晨人均停留时间	周末人均停留时间	日均人流量
基站编号				
36902				78						521			602				2863
36903				144						600			521				2245
36904				95						457			468				1283
36905				69						596			695				1054
36906				190						527			691				2051

数据标准化

#数据标准化到[0,1]
data = (data - data.mean())/(data.max() - data.min())
#展示前五条记录
data.head()
	工作日上班时间人均停留时间	凌晨人均停留时间	周末人均停留时间	日均人流量
基站编号				
36902		-0.280457				0.550470		0.482363	-0.207109
36903		-0.121036				0.694107		0.357555	-0.258052
36904		-0.239394				0.434107		0.275891	-0.337353
36905		-0.302196				0.686834		0.625660	-0.356231
36906		-0.009925				0.561379		0.619497	-0.274045

绘制谱系聚类图

#使用scipy的层次聚类函数绘制谱系聚类图
Z = linkage(data, method = 'ward', metric = 'euclidean')
P = dendrogram(Z, 0) 
plt.show()

在这里插入图片描述

  • 可以观察到聚类类别为3

数据聚类

#训练模型
model = AgglomerativeClustering(n_clusters = 3, linkage = 'ward')
model.fit(data)

#为聚类后的数据添加类别标签
r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)
r.columns = list(data.columns) + [u'聚类类别']

#展示各类别前五条记录
r.groupby(u'聚类类别').head()

工作日上班时间人均停留时间	凌晨人均停留时间	周末人均停留时间	日均人流量	聚类类别
基站编号					
36902		-0.280457			0.550470		0.482363	-0.207109		1
36903		-0.121036			0.694107		0.357555	-0.258052		1
36904		-0.239394			0.434107		0.275891	-0.337353		1
36905		-0.302196			0.686834		0.625660	-0.356231		1
36906		-0.009925			0.561379		0.619497	-0.274045		1
37371		0.383795			-0.264075		-0.292676	-0.109837		2
35162		0.407949			-0.222257		-0.187899	0.066406		2
35425		0.444181			-0.247711		-0.211012	-0.216259		2
37064		0.593939			-0.218621		-0.172491	-0.086508		2
38792		0.562539			-0.245893		-0.137052	-0.052463		2
35571		-0.236978			-0.229530		-0.306543	0.498522		0
38267		-0.258718			-0.216802		-0.232583	0.419056		0
36387		-0.236978			-0.304075		-0.032275	0.613269		0
37459		-0.188669			-0.264075		-0.244910	0.156670		0
37795		-0.224901			-0.244075		-0.004540	0.506765		0

聚类展示

#正常显示中文和负号
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 

#设置图表点线和标签
style = ['ro-', 'go-', 'bo-']
xlabels = [u'工作日人均停留时间', u'凌晨人均停留时间', u'周末人均停留时间', u'日均人流量']

#分别绘制各类别数据折线图
for i in range(3):
    plt.figure()
    tmp = r[r[u'聚类类别'] == i].iloc[:,:4]
    for j in range(len(tmp)):
        plt.plot(range(1, 5), tmp.iloc[j], style[i])
    plt.xticks(range(1, 5), xlabels, rotation = 45)
    plt.title(u'商圈类别%s' %(i+1)) 
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分析结果

  • 类别1:
    工作日人均停留时间、凌晨人均停留时间和周末人均停留时间短,日均人流量高,适合最为促销的商圈。
  • 类别2:
    工作日人均停留时间短,凌晨人均停留时间和周末人均停留时间长,日均人流量低,类似于住宅区,不利于促销。
  • 类别3:
    工作日人均停留时间长,凌晨人均停留时间和周末人均停留时间短,日均人流量低,类似于工作区,不利于促销。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
层次聚类分析是一种基于距离度量的聚类法,它通过计不同样本之间的距离,将样本逐步合并为越来越大的簇,直至达到预设的聚类数量或者满足某种条件为止。 在基站定位数据商圈分析中,我们可以将商圈看作是一个点集合,每个点表示商圈中心的位置。我们可以使用层次聚类分析对这些点进行聚类,从而发现不同的商圈商圈之间的相似性以及热门商圈的分布情况。 下面是一个使用Python进行层次聚类分析的示例代码: ```python import pandas as pd import numpy as np from scipy.spatial.distance import pdist, squareform from scipy.cluster.hierarchy import linkage, dendrogram # 读取商圈数据 df = pd.read_csv('business_districts.csv') # 计商圈之间的距离矩阵 dist_matrix = pdist(df.iloc[:, 1:], metric='euclidean') # 使用Ward方法进行层次聚类 linkage_matrix = linkage(dist_matrix, method='ward') # 绘制树状图 dendrogram(linkage_matrix) # 显示结果 plt.show() ``` 在上面的代码中,我们首先读取了商圈数据,并计商圈之间的欧几里得距离矩阵。然后使用Ward方法进行层次聚类,并绘制了树状图。 树状图可以帮助我们直观地了解聚类结果,其中每个叶节点表示一个商圈,不同颜色的线段表示不同的簇。我们可以根据树状图中的切割点,将商圈分成不同的簇,从而得到不同的商圈群组。 除了树状图,我们还可以使用其他的聚类评估指标,如轮廓系数、Calinski-Harabasz指数等,来评估聚类结果的质量。最终,我们可以根据聚类结果,进一步分析商圈的特点和分布情况,为商业决策提供参考。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值