simuldata <- function(m,m2=m){ z<- c(rbinom(1,m,1/3)) z[2]<-rbinom(1,m-z[1],1/2) v<- c(rbinom(1,m,1/3)) v[2]<-rbinom(1,m-v[1],1/2) x <- c(rnorm(z[1])/2+2, rnorm(z[2])+6, rnorm(m-z[1]-z[2])/2+3, rnorm(v[1])/1+4, rnorm(v[2])/3+1, rnorm(m-v[1]-v[2])+8) y <- c(rnorm(z[1])/2+1, rnorm(z[2])/3+1, rnorm(m-z[1]-z[2])/2+1.5, rnorm(v[1])/3+2, rnorm(v[2])/3+2, rnorm(m-v[1]-v[2])/3+1.5) typ <- c(rep("blue",m),rep("red",m2)) return(data.frame(x,y,typ)) } lerndaten <- simuldata(200) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern1.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern2.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern2.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern3.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern4.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern5.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern6.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern7.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern8.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern9.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern10.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern11.pdf") punkt <- simuldata(1)[runif(1,1,2.99999999),] points(punkt$x,punkt$y,pch=20,cex=2) dev.print(pdf,file="lern12.pdf") points(punkt$x,punkt$y,pch=20,col=as.vector(punkt$typ)) dev.print(pdf,file="lern13.pdf") plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) blaudichte <- function(x) { .3333*dnorm(x[1],2,.5)*dnorm(x[2],1,.5)+ .3333*dnorm(x[1],6,1)*dnorm(x[2],1,1/3)+ .3333*dnorm(x[1],3,0.5)*dnorm(x[2],1.5,.5) } rotdichte <- function(x) { .3333*dnorm(x[1],4,1)*dnorm(x[2],2,1/3)+ .3333*dnorm(x[1],1,1/3)*dnorm(x[2],2,1/3)+ .3333*dnorm(x[1],8,1)*dnorm(x[2],1.5,1/3) } library(MASS) L <- lda(typ~.,lerndaten) a <- rep(1:100/10,90) b <- rep(1:90/30,rep(100,90)) P <- predict(L,data.frame("x"=a,"y"=b),type="probs") points(a,b,pch=46,col=as.vector(P$class)) contour(1:100/10,1:90/30,matrix(P[[2]][,1]-P[[2]][,2],100), add=T,levels=0,labex=c()) dev.print(pdf,file="lda.pdf") Q<- qda(typ~.,lerndaten) P2<-predict(Q,data.frame("x"=a,"y"=b),type="probs")$class plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) points(a,b,pch=46,col=as.vector(P2)) Pp<-predict(Q,data.frame("x"=a,"y"=b),type="probs") contour(1:100/10,1:90/30,matrix(Pp[[2]][,1]-Pp[[2]][,2],100), add=T,levels=0,labex=0) dev.print(pdf,file="qda.pdf") library(class) knn(lerndaten[,1:2],data.frame("x"=a,"y"=b),lerndaten$typ,k=1)->einnachb plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ),pch=20) points(a,b,pch=42,col=as.vector(einnachb)) dev.print(pdf,file="knn1.pdf") knn(lerndaten[,1:2],data.frame("x"=a,"y"=b),lerndaten$typ,k=5)->fuenfnachb plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ),pch=20) points(a,b,pch=42,col=as.vector(fuenfnachb)) dev.print(pdf,file="knn5.pdf") knn(lerndaten[,1:2],data.frame("x"=a,"y"=b),lerndaten$typ,k=20)->zwoelfnachb plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ),pch=20) points(a,b,pch=42,col=as.vector(zwoelfnachb)) points(lerndaten$x,lerndaten$y,col=lerndaten$typ) dev.print(pdf,file="knn12.pdf") library(nnet) nnet(typ~x+y,lerndaten,size=5,maxit=1000)->netz pnn<-predict(netz,data.frame("x"=a,"y"=b)) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) #points(lerndaten$x,lerndaten$y,col=lerndaten$typ,pch=20) contour(1:100/10,1:90/30,matrix(pnn,100), add=T,levels=0.5,labex=0) dev.print(pdf,file="nn1.pdf") nnet(typ~x+y,lerndaten,size=5,maxit=1000)->netz pnn<-predict(netz,data.frame("x"=a,"y"=b)) contour(1:100/10,1:90/30,matrix(pnn,100), add=T,levels=0.5,labex=0) dev.print(pdf,file="nn2.pdf") nnet(typ~x+y,lerndaten,size=5,maxit=1000)->netz pnn<-predict(netz,data.frame("x"=a,"y"=b)) contour(1:100/10,1:90/30,matrix(pnn,100), add=T,levels=0.5,labex=0) dev.print(pdf,file="nn3.pdf") nnet(typ~x+y,lerndaten,size=5,maxit=1000)->netz pnn<-predict(netz,data.frame("x"=a,"y"=b)) contour(1:100/10,1:90/30,matrix(pnn,100), add=T,levels=0.5,labex=0) dev.print(pdf,file="nn4.pdf") nnet(typ~x+y,lerndaten,size=5,maxit=1000)->netz pnn<-predict(netz,data.frame("x"=a,"y"=b)) contour(1:100/10,1:90/30,matrix(pnn,100), add=T,levels=0.5,labex=0) dev.print(pdf,file="nn5.pdf") library(e1071) sv<-svm(typ~x+y,lerndaten) svp<-predict(sv,data.frame("x"=a,"y"=b)) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) points(a,b,pch=42,col=as.vector(svp)) points(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ),pch=20) dev.print(pdf,file="svm.pdf") lerndaten <- simuldata(200) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten2.pdf") lerndaten <- simuldata(200) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten3.pdf") contour(1:100/10,1:90/30,matrix(apply(cbind(a,b),1,rotdichte),100), add=T,col="red",nlevels=20) dev.print(pdf,file="rotdichte.pdf") contour(1:100/10,1:90/30,matrix(apply(cbind(a,b),1,blaudichte),100), add=T,col="blue",nlevels=20) dev.print(pdf,file="blaudichte.pdf") contour(1:100/10,1:90/30,matrix(apply(cbind(a,b),1,rotdichte)-apply(cbind(a,b),1,blaudichte),100),add=T,levels=0,labex=0,lwd=5) dev.print(pdf,file="optimal.pdf") lerndaten <- simuldata(10) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten10.pdf") lerndaten <- simuldata(20) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten20.pdf") lerndaten <- simuldata(50) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten50.pdf") lerndaten <- simuldata(1000) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="lerndaten1000.pdf") simuldata2 <- function(m){ x <- c(rnorm(m)/4, rnorm(m)) y <- c(rnorm(m)/4, rnorm(m)) typ <- c(rep("blue",m),rep("red",m)) return(data.frame(x,y,typ)) } simuldata3 <- function(m){ x <- c(rnorm(m), rnorm(m)) y <- c(rnorm(m)+1, rnorm(m)-1) typ <- c(rep("blue",m),rep("red",m)) return(data.frame(x,y,typ)) } simuldata4 <- function(m){ x <- c(rnorm(m)/2, rnorm(m)) y <- c(rnorm(m)/2+1, rnorm(m)-1) typ <- c(rep("blue",m),rep("red",m)) return(data.frame(x,y,typ)) } lerndaten <- simuldata4(200) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) bewerte<-function(simfunct,n,wdh){ svmbew <- c() nnetbew <- c() ldabew <-c() knnbew <-c() qdabew <- c() for(i in 1:wdh) { lerndaten <- simfunct(n) testdaten<-simfunct(100) svmbew[i]<-sum(predict(svm(typ~x+y,lerndaten),testdaten[,1:2])!=testdaten$typ)/200 nnetbew[i]<-sum(round(predict(nnet(typ~x+y,lerndaten,size=5,maxit=1000),testdaten[,1:2]))!=rep(c(0,1),c(100,100)))/200 ldabew[i] <-sum(predict(lda(typ~.,lerndaten),testdaten[,1:2])$class!=testdaten$typ)/200 knnbew[i] <-sum(knn(lerndaten[,1:2],testdaten[,1:2],lerndaten$typ,k=1)!=testdaten$typ)/200 qdabew[i] <-sum(predict(qda(typ~.,lerndaten),testdaten[,1:2],type="probs")$class!=testdaten$typ)/200 } return(data.frame(ldabew,qdabew,knnbew,nnetbew,svmbew)) } bew10<-bewerte(simuldata,10,50) bew20<-bewerte(simuldata,20,50) bew50<-bewerte(simuldata,50,50) bew100<-bewerte(simuldata,100,50) bew200<-bewerte(simuldata,200,50) bew500<-bewerte(simuldata,500,50) bew1000<-bewerte(simuldata,1000,50) M <- matrix(c(mean(bew10),mean(bew20),mean(bew50),mean(bew100),mean(bew200),mean(bew500),mean(bew1000)),ncol=7) plot(c(10,20,50,100,200,500,1000),M[1,],t='b',col='red',ylim=c(0,max(M)),xlim=c(10,1200),ylab="Fehlerrate",xlab="Anzahl Lenrdaten",log="x") points(c(10,20,50,100,200,500,1000),M[2,],t='b',col='green') points(c(10,20,50,100,200,500,1000),M[3,],t='b',col='blue') points(c(10,20,50,100,200,500,1000),M[4,],t='b') points(c(10,20,50,100,200,500,1000),M[5,],t='b',col="orange") text(rep(1200,5),c(M[1,7],M[2,7],M[3,7],M[4,7],M[5,7]),labels=c("lda","qda","knn","nnet","svm"),col=c("red","green","blue","black","orange")) dev.print(pdf,file="contest1.pdf") lerndaten <- simuldata3(1000) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="vert2.pdf") bew10n<-bewerte(simuldata3,10,50) bew20n<-bewerte(simuldata3,20,50) bew50n<-bewerte(simuldata3,50,50) bew100n<-bewerte(simuldata3,100,50) bew200n<-bewerte(simuldata3,200,50) bew500n<-bewerte(simuldata3,500,50) bew1000n<-bewerte(simuldata3,1000,50) M <- matrix(c(mean(bew10n),mean(bew20n),mean(bew50n),mean(bew100n),mean(bew200n),mean(bew500n),mean(bew1000n)),ncol=7) plot(c(10,20,50,100,200,500,1000),M[1,],t='b',col='red',ylim=c(0,max(M)),xlim=c(10,1200),ylab="Fehlerrate",xlab="Anzahl Lerndaten",log="x") points(c(10,20,50,100,200,500,1000),M[2,],t='b',col='green') points(c(10,20,50,100,200,500,1000),M[3,],t='b',col='blue') points(c(10,20,50,100,200,500,1000),M[4,],t='b') points(c(10,20,50,100,200,500,1000),M[5,],t='b',col="orange") text(rep(1200,5),c(M[1,7]-.012,M[2,7]-.006,M[3,7],M[4,7]+.005,M[5,7]),labels=c("lda","qda","knn","nnet","svm"),col=c("red","green","blue","black","orange")) dev.print(pdf,file="contest2.pdf") lerndaten <- simuldata2(200) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="vert3.pdf") bew10n2<-bewerte(simuldata2,10,50) bew20n2<-bewerte(simuldata2,20,50) bew50n2<-bewerte(simuldata2,50,50) bew100n2<-bewerte(simuldata2,100,50) bew200n2<-bewerte(simuldata2,200,50) bew500n2<-bewerte(simuldata2,500,50) bew1000n2<-bewerte(simuldata2,1000,50) M <- matrix(c(mean(bew10n2),mean(bew20n2),mean(bew50n2),mean(bew100n2),mean(bew200n2),mean(bew500n2),mean(bew1000n2)),ncol=7) plot(c(10,20,50,100,200,500,1000),M[1,],t='b',col='red',ylim=c(0,max(M)),xlim=c(10,1200),ylab="Fehlerrate",xlab="Anzahl Lerndaten",log="x") points(c(10,20,50,100,200,500,1000),M[2,],t='b',col='green') points(c(10,20,50,100,200,500,1000),M[3,],t='b',col='blue') points(c(10,20,50,100,200,500,1000),M[4,],t='b') points(c(10,20,50,100,200,500,1000),M[5,],t='b',col="orange") text(rep(1200,5),c(M[1,7],M[2,7]-0.01,M[3,7],M[4,7]+0.005,M[5,7]),labels=c("lda","qda","knn","nnet","svm"),col=c("red","green","blue","black","orange")) dev.print(pdf,file="contest3.pdf") lerndaten <- simuldata4(500) plot(lerndaten$x,lerndaten$y,col=as.vector(lerndaten$typ)) dev.print(pdf,file="vert4.pdf") bew10n4<-bewerte(simuldata4,10,20) bew20n4<-bewerte(simuldata4,20,20) bew50n4<-bewerte(simuldata4,50,20) bew100n4<-bewerte(simuldata4,100,20) bew200n4<-bewerte(simuldata4,200,20) bew500n4<-bewerte(simuldata4,500,20) bew1000n4<-bewerte(simuldata4,1000,20) M <- matrix(c(mean(bew10n4),mean(bew20n4),mean(bew50n4),mean(bew100n4),mean(bew200n4),mean(bew500n4),mean(bew1000n4)),ncol=7) plot(c(10,20,50,100,200,500,1000),M[1,],t='b',col='red',ylim=c(0,max(M)),xlim=c(10,1200),ylab="Fehlerrate",xlab="Anzahl Lerndaten",log="x") points(c(10,20,50,100,200,500,1000),M[2,],t='b',col='green') points(c(10,20,50,100,200,500,1000),M[3,],t='b',col='blue') points(c(10,20,50,100,200,500,1000),M[4,],t='b') points(c(10,20,50,100,200,500,1000),M[5,],t='b',col="orange") text(rep(1200,5),c(M[1,7],M[2,7]-0.002,M[3,7],M[4,7]+0.002,M[5,7]),labels=c("lda","qda","knn","nnet","svm"),col=c("red","green","blue","black","orange")) dev.print(pdf,file="contest4.pdf")