这一章的代码注意,作者只在windows下面运行过,没有在linux下面运行过

第一个代码是为了看下数据的稳定程度,代码中主要关注点是那个离差标准化

#-*- coding: utf-8 -*-
#数据标准化到[0,1]
import pandas as pd#参数初始化
filename = '../data/business_circle.xls' #原始数据文件
standardizedfile = '../tmp/standardized.xls' #标准化后数据保存路径data = pd.read_excel(filename, index_col = u'基站编号') #读取数据data = (data - data.min())/(data.max() - data.min()) #离差标准化
data = data.reset_index()data.to_excel(standardizedfile, index = False) #保存结果

第二个代码的意图是为了获知把数据分成几类合适

#-*- coding: utf-8 -*-
#谱系聚类图
import pandas as pd#参数初始化
standardizedfile = '../data/standardized.xls' #标准化后的数据文件
data = pd.read_excel(standardizedfile, index_col = u'基站编号') #读取数据import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import linkage,dendrogram
#这里使用scipy的层次聚类函数Z = linkage(data, method = 'ward', metric = 'euclidean') #谱系聚类图
P = dendrogram(Z, 0) #画谱系聚类图
plt.show()

纵轴是类别数量,在3的地方横向画一条横线,此时对应就是分成3类。

第三个代码的分类总数根据第二个代码来确定

#-*- coding: utf-8 -*-
#层次聚类算法
import pandas as pd#参数初始化
standardizedfile = '../data/standardized.xls' #标准化后的数据文件
k = 3 #聚类数
data = pd.read_excel(standardizedfile, index_col = u'基站编号') #读取数据from sklearn.cluster import AgglomerativeClustering #导入sklearn的层次聚类函数
model = AgglomerativeClustering(n_clusters = k, linkage = 'ward')#AgglomerativeClustering的意思是层次聚类
model.fit(data) #训练模型#详细输出原始数据及其类别
r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)  #详细输出每个样本对应的类别,Series是种数据结构
print("r=",r)#把建模后的数据传给r
r.columns = list(data.columns) + [u'聚类类别'] #重命名表头,这样同一类数据就会有相同的标签
print("************************************************************")
print("list(data.columns)",list(data.columns))
print("------------------------------------------------------------")
print("------------------------------------------------------------")
print("r.columns=",r.columns )import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号style = ['ro-', 'go-', 'bo-']#这个表示绘图的样式,r代表红色,g代表绿色,b代表蓝色,o-中,o表示用粗点标记,-表示连线
xlabels = [u'工作日人均停留时间', u'凌晨人均停留时间', u'周末人均停留时间', u'日均人流量']
pic_output = '../tmp/type_' #聚类图文件名前缀#下面两重for循环的意思是,外循环控制画哪个图,内循环负责把一条条彩线画上去
#前面分成几类,那么下面就会有几个图,图中的每条线代表excel中的整行数据
for i in range(k): #逐一作图,作出不同样式plt.figure()tmp = r[r[u'聚类类别'] == i].iloc[:,:4] #前面把建模后的数据传给了r,所以这里从r中获取其中一类的所有行和前4列数据。#iloc是index location的意思,意思是用序号对行进行索引print("tmp=",tmp)print("ENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN")for j in range(len(tmp)):#由于前面k=3,总数据量为431,所以j的范围是1~146,1~146 1~139plt.plot(range(1, 5), tmp.iloc[j], style[i])#这个range指的是对数据的前四列属性的具体值#上面的tmp.iloc[j]指的是分类后,某一特定类早上的某条数据。#上面的这个style用到了前面定义的一句话style = ['ro-', 'go-', 'bo-']plt.xticks(range(1, 5), xlabels, rotation = 20) #坐标标签,rotation就是x轴标签的倾斜程度#如果要根据需要来修改程序,那么上面的两个(1,5)和前面的tmp = r[r[u'聚类类别'] == i].iloc[:,:4]这句话中的范围要同时修改plt.title(u'商圈类别%s' %(i+1)) #我们计数习惯从1开始plt.subplots_adjust(bottom=0.15) #调整底部plt.savefig(u'%s%s.png' %(pic_output, i+1)) #保存图片

上面这个代码的意思有两部分:

一、聚类

二、三类数据各自绘图

----------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------

最后来分析这三个图,这三个图到底什么意思呢?

这三个图分别代表不同地点的情况。

注意,人均停留时间是不能根据离差标准化后的数据来进行观察的。

离差标准化只是反应数据的波动程度。

由于最终目的是仅仅在一个进行经营,所以需要在以上三个图(也就是三个地点中)中选择同时满足以下两点的图(地点):

一、在三个“停留时间”属性中的数值波动不大

二、在原数据集中停留时间较长

以此进行商圈建设,会有较好的收益。

总结:对三个地方获取数据,代码的最终目标是判断哪个地方建立商区比较合适,其余两个地方放弃。

基于基站定位数据的商圈分析代码详细解释相关推荐

  1. 数据分析与挖掘实战-基于基站定位数据的商圈分析

    基于基站定位数据的商圈分析 背景 随着个人手机终端的普及,出行群体中手机拥有率和使用率已经达到相当高的比例,手机移动网络也基本上实现了城乡空间区域的全覆盖.根据手机信号在真实地理空间上的覆盖情况,将手 ...

  2. 基于基站定位数据的商圈分析

    基于基站定位数据的商圈分析 目录 基于基站定位数据的商圈分析 实验介绍 实验背景 实验目标 实验分析方法与过程 分析流程 数据抽取分析 数据抽取 数据分析 数据预处理 数据规约 数据变换 模型构建-- ...

  3. 《Python数据分析与挖掘实战》第14章——基于基站定位数据的商圈分析(层次聚类)

    本文是基于<Python数据分析与挖掘实战>的实战第14章<基于基站定位数据的商圈分析>做的分析. 1 挖掘背景及目标 从某通信运营商提供的特定接口解析得到用户的定位数据.利用 ...

  4. 数据分析与挖掘:基于基站定位数据的商圈分析

    基于基站定位数据的商圈分析 1. 背景与挖掘目标 2. 分析方法与过程 2.1 数据预处理 2.2 模型构建 2.3 模型分析 1. 背景与挖掘目标 项目为<Python 数据分析与挖掘实战&g ...

  5. 利用层次聚类算法进行基于基站定位数据的商圈分析

    1. 背景与挖掘目标 1.1 背景 • 随着个人手机和网络的普及,手机已经基本成为所有人必须持有的工具. • 根据手机信号再地理空间的覆盖情况结合时间序列的手机定位数据可以完整的还原人群的现实活动轨迹 ...

  6. 【数据分析与挖掘系列】基于基站定位数据的商圈分析(全数据集和代码)

    数据集:分享资料 提取码:au99 案例背景 随着当今个人手机终端的普及,出行群体中手机拥有率和使用率已达到相当高的比例,手机移动网络也基本实现了城乡空间区域的全覆盖.根据手机信号在真实地理空间上的覆 ...

  7. 数据挖掘实例(基于基站定位数据的商圈分析)

    背景: 移动终端的普及,手机用户时间序列的手机定位数据,映射到现实的地理空间位置,即可完整.客观地还原出手机用户的现实活动轨迹,从而挖掘出人口空间分布与活动联系的特征信息. 注:移动通信网络的信号覆盖 ...

  8. Python:层次聚类分析——基于基站定位数据商圈分析

    <Python数据分析与挖掘实战>书中本章无原始数据,文中仅展示了聚类分析了各人群聚集区特征(商圈特征,做营销策划住宅区.CBD商场.办公楼这还用聚类分析吗,直接肉眼也能辨别吧,这就是所有 ...

  9. 【2017年第1期】手机基站定位数据可视分析

    李海生1,2,黄媛洁1,2,宋璇1,2,杜军平3,陈国润4,丁富强4 1 北京工商大学计算机与信息工程学院,北京 1000482 食品安全大数据技术北京市重点实验室,北京 1000483 北京邮电大学 ...

最新文章

  1. 复制链接到safari浏览器打开_JS实现复制到剪贴板(兼容FF/Chrome/Safari所有浏览器)...
  2. Android开源项目
  3. matlab字符处理
  4. STL13-list容器(链表)
  5. CVPR2019 Oral!伯克利、麻省理工GAN图像合成最新成果(附开源代码)!
  6. Elasticsearch 支持哪些类型的查询?
  7. 【Python】理解Python(1) - Python数据模型,is关键字,类型
  8. Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下
  9. mysql drivermanager.getconnection_Java DriverManager.getConnection()方法:获取数据库连接
  10. 操作cookies值
  11. 基于 display 和 javaScript 封装一个页面布局小插件
  12. django中render()与render_to_response()区别
  13. android后台定时执行任务,后台执行的定时任务
  14. 斐讯路由怎么设置虚拟服务器,192.168.2.1斐讯路由器设置的方法?
  15. 《吴军.科技史纲60讲》摘录
  16. Milet谷仓:区块链电商先行者
  17. php 过滤英文标点符号 过滤中文标点符号
  18. 政务云市场开启“狂飙”:一项前三,两项跃升!
  19. 厦门航空谁让你如此霸王
  20. 浅谈迪杰斯特拉(Dijkstra)算法和A*算法原理及实现

热门文章

  1. 如何为Myeclipse手工添加dtd支持
  2. C#编程-Access数据库的简单应用
  3. 关于C++的extern关键字
  4. JS 原生实现复选框全选反选功能
  5. 异步编程Promise、Generator和Async
  6. 2021高考成绩查询省排名,重磅!2021全国各地高考预测分数线出炉,这样估分可以估算全省排名...
  7. 调整样式_2019年4月1日起,内河船船员适任证书样式调整成这样啦~
  8. JAVA常用的数据结构集合框架总结
  9. eclipse自动补全失效解决办法
  10. CSS模块化方案分类