前言: 近日,一份名为“2000万开房数据”的资料被网友疯狂下载。2000万条数据大范围泄露,显示了2000万个受害人包含姓名、身份证号、性别、出生年月日、手机号及注册邮箱在内的详细个人信息。本人从百度云上找到了这2000万开房数据,居然能找到本人的记录(可恨啊!)由于数据量太大,估计导入R也会出问题吧,只对最后50000条记录(写的是5千多条其实有误)作分析。
环境: 操作系统:Windows 7 64位 JDK1.7.0_40 R版本:R version 3.0.2 (2013-09-25) -- "Frisbee Sailing" 32位 分词工具:Rwordseg 云图:wordcloud 关联分析及可视化:arules/arulesViz
注:Rwordseg 是一个R环境下的中文分词工具,使用rJava调用Java分词工具Ansj。 Ansj 也是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法,采用隐马尔科夫模型(Hidden Markov Model, HMM)。作者孙健重写了一个Java版本,并且全部开源,使得 Ansi 可用于人名识别、地名识别、组织机构名识别、多级词性标注、关键词提取、指纹提取等领域,支持行业词典、 用户自定义词典。详细信息可以参考作者孙健的专访以及项目的Github地址。 当前版本的Rwordseg包完全引用了 Ansj 包,只是简单提供了R的接口,并根据R中处理文本的习惯进行了调整,
安装:
1)安装rJava和JAVA环境 该包依赖于rJava包和Java环境,在安装之前需要确保JRE和rJava包已经安装,并且正确地设置了环境变量。当前版本的R包在JRE 1.7.0_40下测试通过。 以Windows系统为例,假设JRE安装目录为D:\jdk1.7.0_40\jre,R安装在D:\R\R-3.0.2,那么需要将如下路径添加到PATH环境变量中。
D:\jdk1.7.0_40\jre\bin D:\jdk1.7.0_40\jre\bin\client D:\jdk1.7.0_40\jre\bin\server D:\R\R-3.0.2\library\rJava\jri
2)安装Rwordseg install.packages("Rwordseg", repos = "http://R-Forge.R-project.org")
注:如果是旧版本的R,可以通过source的方式进行安装: install.packages("Rwordseg", repos = "http://R-Forge.R-project.org", type = "source")
3)安装arules 和wordcloud install.packages("arules") install.packages("arulesViz") install.packages("wordcloud") library(arules) library(arulesViz) library(wordcloud) require(Rwordseg)
4)载入数据 data <-read.csv("c:/50000.csv")
注:开房数据包括姓名、性别、年龄、开房注册时间、身份证、住址、手机号码等信息,数据的获取时间是2012-12-28至2013-1-13共50151条。
分析
一 开房趋势分析 times <- as.Date(data$Version); par(bg = "grey"); plot(table(as.Date(times)), xlab = "注册时间", ylab = "注册数量", main = "开房趋势", col = 2:5); 
结论:在12-28(周五)和29(周六)号开房纪录超多,随后的2013-01-03(周六)开房纪录也比较多,应该是周末人们更有时间开房吧,特别是接近年末的周末更是如此。
二 开房姓氏分析 1)名字长度 names <- as.character(data$Name) cmt.len <- nchar(names) rting <- sort(table(cmt.len), decreasing = T) 
par(mar = c(0, 1, 2, 1)) pie(rate, labels = paste(names(rate), "字 ", format(rate * 100, digits = 3),"%", sep = ""), col = rainbow(5))
三 开房性别分析
sex <- data$Gender sex = sex[sex != ""] sex = sex[sex != " "] sex = sex[sex != 0] sex = sex[sex != "N"] rting <- sort(table(sex), decreasing = T) rate <- rting/sum(rting) pie(rate[1:2], main="性别比率", col=colors,cex=0.8) legend(1,0.5,"right", legend = rate[1:2], bty = "n", fill = colors)
|