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