基于基站定位数据的商圈分析上机报告.docx

上传人:b****5 文档编号:8029683 上传时间:2023-01-28 格式:DOCX 页数:11 大小:191.23KB
下载 相关 举报
基于基站定位数据的商圈分析上机报告.docx_第1页
第1页 / 共11页
基于基站定位数据的商圈分析上机报告.docx_第2页
第2页 / 共11页
基于基站定位数据的商圈分析上机报告.docx_第3页
第3页 / 共11页
基于基站定位数据的商圈分析上机报告.docx_第4页
第4页 / 共11页
基于基站定位数据的商圈分析上机报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于基站定位数据的商圈分析上机报告.docx

《基于基站定位数据的商圈分析上机报告.docx》由会员分享,可在线阅读,更多相关《基于基站定位数据的商圈分析上机报告.docx(11页珍藏版)》请在冰豆网上搜索。

基于基站定位数据的商圈分析上机报告.docx

基于基站定位数据的商圈分析上机报告

基于基站定位数据的商圈分析上机报告

1数据读取及其标准化

setwd("E:

/数据处理")

Data=read.csv("./business_circle.csv",header=T,encoding='utf-8')

colnames(Data)=c("number","x1","x2","x3","x4")

attach(Data)

y1=(x1-min(x1))/(max(x1)-min(x1))

y2=(x2-min(x2))/(max(x2)-min(x2))

y3=(x3-min(x3))/(max(x3)-min(x3))

y4=(x4-min(x4))/(max(x4)-min(x4))

standardized=data.frame(Data[,1],y1,y2,y3,y4)

write.csv(standardized,"./standardizedData.csv",row.names=TRUE)

2模型构建

2.1层次聚类

library(ggplot2)

Data=read.csv("./standardizedData.csv",header=F)

Data1=data.frame(y1,y2,y3,y4)

attach(Data1)

dist=dist(Data1,method='euclidean')

hc1<-hclust(dist,"ward.D2")

plot(hc1)

plot(hc1,hang=-1)

#分成三类

re1<-rect.hclust(hc1,k=3,border="purple")##对构建好的谱系聚类图进行分类,这里分三类

a=re1[[2]]##列表名[[下标]]

b=re1[[3]]

c=re1[[1]]

#商圈类别1

matrix=Data1[a,]##137个观测值、4个变量

d<-dim(matrix)##1374

y<-as.numeric(t(matrix))#t():

矩阵转置,这里转换成数字向量

row<-factor(rep(1:

d[1],each=d[2]))

x<-rep(1:

d[2],times=d[1])

data<-data.frame(y=y,x=x,row=row)

View(data)

ggplot(data=data,aes(x=x,y=y,group=row))+

geom_line()+scale_x_continuous(breaks=c(1,2,3,4),labels=c("工作日人均停留时间","凌晨人均停留时间","周末人均停留时间","日均人流量"))+

labs(title="商圈类别1",x="",y="")

#商圈类别2

matrix=Data1[b,]

d<-dim(matrix)

y<-as.numeric(t(matrix))

row<-factor(rep(1:

d[1],each=d[2]))

x<-rep(1:

d[2],times=d[1])

data<-data.frame(y=y,x=x,row=row)

ggplot(data=data,aes(x=x,y=y,group=row))+geom_line()+

scale_x_continuous(breaks=c(1,2,3,4),labels=c("工作日人均停留时间","凌晨人均停留时间","周末人均停留时间","日均人流量"))+

labs(title="商圈类别2",x="",y="")

#商圈类别3

matrix=Data1[c,]

d<-dim(matrix)##1484

y<-as.numeric(t(matrix))

row<-factor(rep(1:

d[1],each=d[2]))

x<-rep(1:

d[2],times=d[1])

data<-data.frame(y=y,x=x,row=row)

ggplot(data=data,aes(x=x,y=y,group=row))+geom_line()+

scale_x_continuous(breaks=c(1,2,3,4),labels=c("工作日人均停留时间","凌晨人均停留时间","周末人均停留时间","日均人流量"))+

labs(title="商圈类别3",x="",y="")

2.2K-means聚类

setwd("E:

/数据处理")

Data=read.csv("./business_circle.csv",header=T,encoding='utf-8')

km=kmeans(Data,center=3)

print(km)

#数据分组

aaa=data.frame(Data,km$cluster)

Data1=Data[which(aaa$km.cluster==1),]

Data2=Data[which(aaa$km.cluster==2),]

Data3=Data[which(aaa$km.cluster==3),]

#商圈1的概率密度函数图

par(mfrow=c(2,2))##公共参数列表par#设置布局

plot(density(Data1[,1]),col="red",main="工作日人均停留时间")

plot(density(Data1[,2]),col="red",main="凌晨人均停留时间")

plot(density(Data1[,3]),col="red",main="周末人均停留时间")

plot(density(Data1[,4]),col="red",main="日均人流量")

#商圈2的概率密度函数图

par(mfrow=c(2,2))

plot(density(Data2[,1]),col="purple",main="工作日人均停留时间")

plot(density(Data2[,2]),col="purple",main="凌晨人均停留时间")

plot(density(Data2[,3]),col="purple",main="周末人均停留时间")

plot(density(Data2[,4]),col="purple",main="日均人流量")

#商圈3的概率密度函数图

par(mfrow=c(2,2))

plot(density(Data3[,1]),col="blue",main="工作日人均停留时间")

plot(density(Data3[,2]),col="blue",main="凌晨人均停留时间")

plot(density(Data3[,3]),col="blue",main="周末人均停留时间")

plot(density(Data3[,4]),col="blue",main="日均人流量")

3总结

3.1数据标准化的方法及使用离差标准化原因

1.数据标准化方法

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。

在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上,常见的数据归一化的方法有:

 

1)min-max标准化(Min-maxnormalization)

  也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

  其中max为样本数据的最大值,min为样本数据的最小值。

这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

2)log函数转换

  通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:

3)atan函数转换

  用反正切函数也可以实现数据的归一化:

  

  使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上。

而并非所有数据标准化的结果都映射到[0,1]区间上,也有一些非归一化的方法,如下:

4)z-score 标准化(zero-meannormalization)

  也叫标准差标准化,是SPSS中最为常用的标准化方法:

经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

  其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

5)Decimal scaling小数定标标准化

这种方法通过移动数据的小数点位置来进行标准化。

小数点移动多少位取决于属性A的取值中的最大绝对值。

将属性A的原始值x使用decimal scaling标准化到x'的计算方法是:

   

x'=x/(10*j)

其中,j是满足条件的最小整数。

 

例如:

假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用1000(即,j=3)除以每个值,这样,-986被规范化为-0.986。

2.使用离差标准化原因

数据标准化处理后,原始数据均可以转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析,但是离差标准化是最常用最简单的一种方式

3.2构建层次聚类模型时,可以调节哪些参数,对模型有何影响

1.层次聚类

1)计算变量之间的距离

代码为:

dist.r=dist(data,method=”“)

其中method包括6种方法,表示不同的距离测度:

”euclidean”,“maximum”,“manhattan”,“canberra”,“binary”or“minkowski”,分别表示欧几里德距离,切比雪夫距离,绝对值距离,Lance距离,明科夫斯基距离,定性变量距离。

使用不同的距离会对聚类的结果产生一定的影响

2)使用hclust()进行聚类

代码为:

hc.r=hclust(dist.r,method=“”)

其中method包括7种方法,表示聚类的方法:

single,complete,median,mcquitty,average,centroid,ward。

分别表示:

最短距离法,最长距离法,中间距离法,相似法,类平均法,重心法,离差平方和法。

3)画图

plot(hc.r,hang=-1,labels=NULL)或者plot(hc.r,hang=0.1,labels=F)

hang等于数值,表示标签与末端树杈之间的距离,若是负数,则表示末端树杈长度是0,即标签对齐。

labels表示标签,默认是NULL,表示变量原有名称。

labels=F:

表示不显示标签。

2.k-mean聚类

kmeans(x,centers,iter.max=10,nstart=1,algorithm=c("Hartigan-Wong","Lloyd","Forgy","MacQueen"),trace=FALSE),centers是初始类的个数或者初始类的中心。

iter.max是最大迭代次数,其中默认迭代次数为10。

nstart是当centers是数字的时候,随机集合的个数。

algorithm是算法,默认是第一个。

3.3K-mean算法实现基本步骤

1.算法步骤

K-Means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。

然后按平均法重新计算各个簇的质心(这个点可以不是样本点),从而确定新的簇心。

一直迭代,直到簇心的移动距离小于某个给定的值。

K-Means聚类算法主要分为三个步骤:

(1)第一步是为待聚类的点寻找聚类中心

(2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去

(3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心反复执行

(2)、(3),直到聚类中心不再进行大范围移动或者聚类次数达到要求为止

2.R语言聚类步骤

(1)读入数据,准备好数据矩阵;

(2)导入knn包,准备进行Kmean聚类分析

(3)在数据集上运行Kmean聚类分析,设置聚类组数,观察将聚类结果进行保存

(4)对以上步骤(3)结果进行修正

(5)根据结果画图

(6)结合问题情境做具体的管理决策分析。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1