手机通话记录统计分析

现现在,智能手机是人手一份。天天咱们都经过手机与外界沟通交流,手机做为必不可少的媒介,无形中记录着咱们平常生活中的点点滴滴。这些信息主要包括我的位置信息、通讯信息、帐号密码信息、存储文件信息等四大类。因为Android是开源的,软件用户可自行对软件进行修改、复制及再分发,直接进行信息交换。有些用户还会本身对系统进行破解,获取权限,窃取我的信息。一些山寨手机甚至还留有后门程序,固化窃听软件,并经过远程遥控使手机话筒在用户不知情的状况下开启,把手机变成一个窃听-器,形成我的隐私泄露。算法

所以,经过对手机数据的挖掘与分析,能够便捷地进行用户行为分析;好比,利用手机定位数据能够进行用户特征挖掘;利用通话记录能够进行社交亲密度分析等等。我带着这个想法,导出本身手机上能够找到的各类数据文件,并经过R软件十对这些数据进行了简单的统计分析,现将步骤记录以下:app

通话记录分析

首先,读取xml格式通话记录并解析,将其转换成数据框格式;而后即可以经过DT包快速便捷地查看通话记录。code

library(XML)

xmlfile=xmlParse(file.choose(),encoding="UTF-8") #读取xml格式通话记录并解析
mydata=xmlToDataFrame(xmlfile) #转换格式

head(mydata)
mydata$Duration=as.numeric(mydata$Duration)

查看列表

library(DT)
datatable(mydata, options = list(pageLength = 10))

按人统计通话记录

calldata=data.frame(Totaltime=with (mydata , tapply (Duration , list (ContactName) , sum ) ),
                    Average=with (mydata ,tapply (Duration , list (ContactName) , mean ) ))
head(calldata)

library(plotly)
plot_ly(calldata,x=rownames(Totaltime),y=Totaltime,type = "bar",name = "sum")
add_trace(calldata,x=rownames(Average),y=Average,name = "mean")

查询

plot_ly(mydata[mydata$ContactName=="张三",],x=StartTime,y=Duration,type = "bar")
plot_ly(mydata[mydata$ContactName=="张三",],x=StartTime,y=Duration)

按日统计通话记录

library(dygraphs)
library(xts)

mydata$StartTime=as.Date(mydata$StartTime) #去除分秒
daydata=with (mydata, tapply (Duration , list (StartTime) , sum ) ) #每日通话时长

dygraph(daydata, main = "每日通话时长走势") %>% 
  dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))

### 转化成时间序列画图
xtsdata=xts(daydata,as.Date(names(daydata)))
index(xtsdata)
dygraph(xtsdata, main = "每日通话时长走势") %>% 
  dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))

这篇文章只记录了对通话记录的简单统计和可视化,手机数据真正的宝矿是其内置的各类传感器,随着物联网时代的到来,如何经过优秀的算法挖掘分析这些信号数据,具备十分重要的意义。xml

反馈与建议