第七次作业
来源:互联网 发布:香港网络的英文缩写 编辑:程序博客网 时间:2024/05/16 01:06
统计软件第七次作业
处理缺失值(knn和相关性)
第一题
利用变量间的相关性借补时,由于会发生最相关的变量对应位置处的观测值也恰好缺失的情形,所以请将这样的情形也考虑在内,即考虑用能借补的那些变量中相关性最大的那个即可。
代码
library(DMwR)data(algae)head(algae)algae1<-algae[manyNAs(algae,0),]algae2<-algae[-manyNAs(algae,0),]symnum(cor(algae2[,4:18]))cor(algae2[,c(5,6,10)])lm1<-lm(PO4~oPO4,data=algae2)lm2<-lm(PO4~mnO2,data=algae2)f1<-function(x) { if(is.na(x))return(NA) else {a<-47.08+1.271*x } return(a)}f2<-function(x) { if(is.na(x))return(NA) else {a<-371-24.88*x } return(a)}algae1[is.na(algae1$PO4),'PO4']<-sapply(algae1[is.na(algae1$PO4),'oPO4'],f1)algae1[is.na(algae1$PO4),'PO4']<-sapply(algae1[is.na(algae1$PO4),'mnO2'],f2)
第二题
在最近邻( KNN )方法中,采用只考虑借助于没有缺失的案例(Cases)的情形。
代码
library(DMwR)head(algae)dm<-function(x){ x<-x[!is.na(x[,'NH4']),] x<-x[!is.na(x[,'oPO4']),] d<-matrix(rep(NA,nrow(x)^2),nrow(x)) for(i in 1:nrow(x)){for(j in 1:nrow(x)){ d[i,j]<-sqrt((x[i,'NH4']-x[j,'NH4'])^2+(x[i,'oPO4']-x[j,'oPO4'])^2)} } return(d)}kn<-function(i,x,k=11){ if(i>nrow(x)) return(nrow(x)+1) else d<-order(x[i,])[2:(k+1)] return(d)}knn<-function(x,k=11){ d1<-dm(x) for(i in which(is.na(x[,'PO4']))){d2<-kn(i,d1,k=k)x[i,'PO4']<-mean(x[d2,'PO4'],na.rm=T) } return(x)}dm1<-function(x){ x<-x[!is.na(x[,'mxPH']),] x<-x[!is.na(x[,'mnO2']),] d<-matrix(rep(NA,nrow(x)^2),nrow(x)) for(i in 1:nrow(x)){for(j in 1:nrow(x)){ d[i,j]<-sqrt((x[i,'mxPH']-x[j,'mxPH'])^2+(x[i,'mnO2']-x[j,'mnO2'])^2)} } return(d)}knn1<-function(x,k=11){ a<-knn(x) a1<-dm1(a)for(i in which(is.na(a[,'PO4']))){d2<-kn(i,a1,k=k)a[i,'PO4']<-mean(a[d2,'PO4'],na.rm=T) } return(a)}
运行
which(is.na(knn1(algae)[,'PO4']))
0 0
- 第七次作业
- 第七次作业
- 第七次作业
- 第七次上机作业
- 第七次课后作业
- 第七次作业
- 第七次作业
- 第七次算法作业
- 第七次作业
- 第七次java作业
- 第七次 HTML作业
- C++第七次作业
- c++第七次作业
- C++第七次作业
- 第七次C++作业
- c++第七次作业
- c++第七次作业
- c++第七次作业
- Android获取屏幕分辨率及DisplayMetrics简介
- HDOJ 2645 find the nearest station (BFS)
- NYOJ62【笨小熊】
- 第六周上机项目2 我的数组类
- 第6周项目6——复制模板类(2)
- 第七次作业
- 关于触发器一些小结
- OpenGL在MFC对话框上进行立方体贴图
- hadoop图片处理毕业设计
- 欢迎使用CSDN-markdown编辑器
- bind使用
- 在控制台中显示Hibernate打印的SQL中的参数
- 第六周上机项目3 人数不定的工资类
- “SpringBoard 无法启动应用程序 错误-3″的解决办法