手機通話記錄統計分析

現現在,智能手機是人手一份。天天咱們都經過手機與外界溝通交流,手機做爲必不可少的媒介,無形中記錄着咱們平常生活中的點點滴滴。這些信息主要包括我的位置信息、通訊信息、帳號密碼信息、存儲文件信息等四大類。因爲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

反饋與建議

相關文章
相關標籤/搜索