统计建模与R软件——MINE
参照“在沉默”同学的作业:http://f.dataguru.cn/thread-86232-1-1.html相关程序及数据.zip (149.3 KB)
1、实验准备
(1)下载数据集WHO.csv
(2)下载MINE.jar程序包
(3)下载MINE.r文件
2、开始做数据挖掘实验
(1)安装rJava软件包
1.>install.packages(“rJava”) 复制代码
(2)设置JVM分配的内存空间
1.>options(java.parameters=”-Xmx1024m”)
(3)将MINE.R文件放到工作空间目录下,并执行 1.>source(“MINE.R”)
(4)读取数据集WHO.csv到数据框who
1.>who=read.csv(“WHO.csv”,T)
(5)把数据框里的数据转成字符串类型
1.>str(who) 复制代码
3、处理缺失值
(1)获取缺失值判定矩阵,1表示缺失值 1.>x=as.data.frame(abs(is.na(who[,-1])))
(2)v1:v357分别替换who[,2:358]的变量名 1.>names(x)=paste(“v”,1:357,sep=””)
(3)计算数据总缺失率 1.>sum(x)/(357*202)
(4)创建一个pdf空文件
1.>pdf(“缺失值情况.pdf”,family=”GB1″)
(5)绘制各变量的数据缺失分布情况 1.>opar=par(no.readonly=T)
2.par(mfrow=c(2,1))
3.plot(table(colSums(x)),col=”red”,main=”各变量的数据缺失分布情况”,ylab=”缺失量”)
4.mtext(paste(“(较大值=”,max(colSums(x)),”; “,”均值=”,round(mean(colSums(x)),3),”; “,”标准差=”,round(sd(colSums(x)),3),”)”),3)
5.plot(table(rowSums(x)),col=”red”,main=”各记录的数据缺失分布情况”,ylab=”缺失量”)
6.mtext(paste(“(较大值=”,max(rowSums(x)),”; “,”均值=”,round(mean(rowSums(x)),3),”; “,”标准差=”,round(sd(rowSums(x)),3),”)”),3)
7.par(opar)
8.dev.off()
上一步处理完成之后,在工作空间目录下生成who2.csv文件,精简后的数据集有180条记录,265个变量,数据量仅约为原来的65.96%,减少了近35%
(6)设定阀值剔除数据缺失严重的变量及记录1.>dc=which(colSums(x)>202*0.6)
2.dr=which(rowSums(x)>358*0.6)
3.who2=who[,-1][-dr,-dc]
4.names(who2)=names(x)[-dc]
5.dim(who2)
6.write.csv(who2,”who2.csv”,row.names=F)
4、用MINE来分析
(1)把MINE.jar拷贝到F:Rworkspace目录下
(2)用cmd命令进到F:Rworkspace目录
(3)执行java命令(确保当前操作系统安装及配置好的JAVA环境):java -jar MINE.jar
(4)再次执行:source(“MINE.R”),将MINE.R加载到R工作环境
(5)用MINE函数来分析 1.>MINE(“who2.csv”,”all.pairs”)复制代码此命令大概执行5-10分钟后产生结果如下
5、基于MIC值绘制变量关系网络图
1.library(igraph);
2.Result<-read.csv(“who2.csv,allpairs,cv=0.0,B=n^0.6,Results.csv”,header=T)
3.Result2<-Result[which(Result[,3]>=0.9),1:3]
4.names(Result2)