看书标记【R语言数据分析与挖掘实战】14

第十四章 基于基站定位数据的商圈分析

14.1 背景与挖掘目标

根据手机信号在真实地理空间上的覆盖情况,将手机用户时间序列的手机定位数据,映射至现实的地理位置,即可完整、客观地还原出手机用户的现实活动轨迹,从而挖掘得到人口空间分布与活动联系特征信息。商圈划分的目的之一是研究潜在顾客的分布以制定适宜的商业对策。建模目标:
1)对用户的历史定位数据,采用数据挖掘技术,对基站进行分群;
2)对不同的商圈分群进行特征分析,比较不同商圈类别的价值,选择合适的区域进行运营商的促销活动。

14.2 分析方法与过程

1、数据抽取。从移动通信运营商提供的特定接口上解析、处理,并过滤用户属性后得到位置数据。
在这里插入图片描述
2、数据探索分析。结合实际情况,对某样本的运动轨迹进行描述。
3、数据预处理。对不观察的变量进行剔除,最后仅保留日期、时间、基站编号和EMASI号。
在这里插入图片描述
对商圈的平均量做描述性分析,并对处理后的数据进行标准化处理

setwd("F:/数据及程序/chapter14/上机实验")
Data <- read.csv("./data/business_circle.csv", header = TRUE, 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, "./tmp/standardizedData.csv", row.names = TRUE)

4、模型构建
构建商圈聚类模型,采用层次聚类算法对数据进行聚类,画出谱系聚类图。

##谱系聚类图
# 设置工作空间
setwd("F:/数据及程序/chapter14/示例程序")
Data <- read.csv("./data/standardized.csv", header = FALSE)
# colnames(Data) <- c("x1", "x2", "x3"," x4")
attach(Data)
dist <- dist(Data, method = 'euclidean')
hc1 <- hclust(dist, "ward.D2") 
plot(hc1, hang = -1)  
detach(Data)

##层次聚类算法
# 设置工作空间
setwd("F:/数据及程序/chapter14/示例程序")

library(ggplot2)
Data <- read.csv("./data/standardized.csv", header = FALSE)

attach(Data)
dist <- dist(Data, method = 'euclidean')
hc1 <- hclust(dist, "ward.D2")
plot(hc1)
# 分成三类
re1 <- rect.hclust(hc1, k = 3)  
a <- re1[[2]]
b <- re1[[3]]
c <- re1[[1]]
# 商圈类别1
matrix <- Data[a,]
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 = "商圈类别1", x = "", y = "")
# 商圈类别2
matrix <- Data[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 <- Data[c,]
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 = "商圈类别3", x = "", y = "")

##对聚类结果按不同类别画出4个特征的折线图

在这里插入图片描述

分析模型结果可以知道人们在三个商圈的停留时间。商圈1偏工作型,商圈2偏商业区,商圈3偏住宅区,所以认为商圈2有利于进行运营商的促销活动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值