R version 2.7.0 (2008-04-22) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(rpart); > > train <- read.table("loans.dat",header=F,col.names=c("x1","x2","y")); > n <- length(train$y) > > size <- 100; > > grid <- mat.or.vec((size+1)*(size+1),2); > for (i in 0:size) { + for (j in 0:size) { + ij <- (size+1)*j+i+1 + grid[ij,1] <- i; + grid[ij,2] <- j; + } + } > grid <- grid/(size+1); > > gx1 <- grid[,1]; > gx2 <- grid[,2]; > > dflt <- (gx1 < 0.3440913); > > errors <- 0 > for (i in 1:n) { + errors <- errors + abs(train$y[i] - (train$x1[i] < 0.3440913)) + } > print(paste("Errors = ", errors)) [1] "Errors = 21" > > edge <- mat.or.vec((size+1)*(size+1),1); > edge <- as.logical(edge); > for (i in 1:size) { + for (j in 1:size) { + left <- (size+1)*j+i+1; + rite <- (size+1)*(j-1)+i+1; + top <- left; + bot <- left - 1; + edge[left] <- + ( dflt[left] && !dflt[rite] ) || + ( !dflt[left] && dflt[rite] ) || + ( dflt[top] && !dflt[bot] ) || + ( !dflt[top] && dflt[bot] ) ; + } + } > > X <- cbind(train$x1,train$x2); > y <- (train$y==1); > > if (!exists("ps.default")) ps.default <- ps.options() > ps.options(horizontal=FALSE,onefile=FALSE); > ps.options(paper="special",pagecentre=FALSE); > ps.options(width=8.0,height=4.0); > > postscript(file="treelec01.eps"); > par(mfrow=c(1,2),mar=c(4,4,1.5,2)+0.1) # mar=c(bottom,left,top,right) > > plot(X,type='n',xlab="FICO Score",ylab="P-Index"); > points(X[y,],pch='o',col="red"); > points(X[!y,],pch='o',col="green"); > points(grid[dflt,],pch='.',col="red"); > points(grid[!dflt,],pch='.',col="green"); > points(grid[edge,],pch='+',col="black",cex=0.4); > > grid <- mat.or.vec((size+1)*(size+1),2); > for (i in 0:size) { + for (j in 0:size) { + ij <- (size+1)*j+i+1 + grid[ij,1] <- i; + grid[ij,2] <- j; + } + } > grid <- grid/(size+1); > > gx1 <- grid[,1]; > gx2 <- grid[,2]; > > dflt <- (gx2 < 0.3520624); > > errors <- 0 > for (i in 1:n) { + errors <- errors + abs(train$y[i] - (train$x2[i] < 0.3520624)) + } > print(paste("Errors = ", errors)) [1] "Errors = 47" > > edge <- mat.or.vec((size+1)*(size+1),1); > edge <- as.logical(edge); > for (i in 1:size) { + for (j in 1:size) { + left <- (size+1)*j+i+1; + rite <- (size+1)*(j-1)+i+1; + top <- left; + bot <- left - 1; + edge[left] <- + ( dflt[left] && !dflt[rite] ) || + ( !dflt[left] && dflt[rite] ) || + ( dflt[top] && !dflt[bot] ) || + ( !dflt[top] && dflt[bot] ) ; + } + } > > X <- cbind(train$x1,train$x2); > y <- (train$y==1); > > plot(X,type='n',xlab="FICO Score",ylab="P-Index"); > points(X[y,],pch='o',col="red"); > points(X[!y,],pch='o',col="green"); > points(grid[dflt,],pch='.',col="red"); > points(grid[!dflt,],pch='.',col="green"); > points(grid[edge,],pch='+',col="black",cex=0.4); > > dev.off(); null device 1 > > grid <- mat.or.vec((size+1)*(size+1),2); > for (i in 0:size) { + for (j in 0:size) { + ij <- (size+1)*j+i+1 + grid[ij,1] <- i; + grid[ij,2] <- j; + } + } > grid <- grid/(size+1); > > gx1 <- grid[,1]; > gx2 <- grid[,2]; > > dflt <- (gx1 < 0.3440913) | ( (gx1 >= 0.3440913) & (gx2 < 0.2215745) ); > dflt0 <- (gx1 < 0.3440913) > > errors <- 0 > for (i in 1:n) { + x1 <- train$x1[i] + x2 <- train$x2[i] + y <- train$y[i] + yhat <- (x1 < 0.3440913) | ( (x1 >= 0.3440913) & (x2 < 0.2215745) ); + errors <- errors + abs(y - yhat) + } > print(paste("Errors = ", errors)) [1] "Errors = 15" > > edge <- mat.or.vec((size+1)*(size+1),1); > edge <- as.logical(edge); > for (i in 1:size) { + for (j in 1:size) { + left <- (size+1)*j+i+1; + rite <- (size+1)*(j-1)+i+1; + top <- left; + bot <- left - 1; + edge[left] <- + ( dflt[left] && !dflt[rite] ) || + ( !dflt[left] && dflt[rite] ) || + ( dflt[top] && !dflt[bot] ) || + ( !dflt[top] && dflt[bot] ) || + ( dflt0[left] && !dflt0[rite] ) || + ( !dflt0[left] && dflt0[rite] ) || + ( dflt0[top] && !dflt0[bot] ) || + ( !dflt0[top] && dflt0[bot] ) + } + } > > X <- cbind(train$x1,train$x2); > y <- (train$y==1); > > postscript(file="treelec02.eps"); > par(mfrow=c(1,2),mar=c(4,4,1.5,2)+0.1) # mar=c(bottom,left,top,right) > > plot(X,type='n',xlab="FICO Score",ylab="P-Index"); > points(X[y,],pch='o',col="red"); > points(X[!y,],pch='o',col="green"); > points(grid[dflt,],pch='.',col="red"); > points(grid[!dflt,],pch='.',col="green"); > points(grid[edge,],pch='+',col="black",cex=0.4); > > grid <- mat.or.vec((size+1)*(size+1),2); > for (i in 0:size) { + for (j in 0:size) { + ij <- (size+1)*j+i+1 + grid[ij,1] <- i; + grid[ij,2] <- j; + } + } > grid <- grid/(size+1); > > gx1 <- grid[,1]; > gx2 <- grid[,2]; > > dflt <- (gx1 < 0.3440913) & (gx2 < 0.75) > dflt0 <- (gx1 < 0.3440913) > > errors <- 0 > for (i in 1:n) { + x1 <- train$x1[i] + x2 <- train$x2[i] + y <- train$y[i] + yhat <- (x1 < 0.3440913) & (x2 < 0.75) + errors <- errors + abs(y - yhat) + } > print(paste("Errors = ", errors)) [1] "Errors = 21" > > edge <- mat.or.vec((size+1)*(size+1),1); > edge <- as.logical(edge); > for (i in 1:size) { + for (j in 1:size) { + left <- (size+1)*j+i+1; + rite <- (size+1)*(j-1)+i+1; + top <- left; + bot <- left - 1; + edge[left] <- + ( dflt[left] && !dflt[rite] ) || + ( !dflt[left] && dflt[rite] ) || + ( dflt[top] && !dflt[bot] ) || + ( !dflt[top] && dflt[bot] ) || + ( dflt0[left] && !dflt0[rite] ) || + ( !dflt0[left] && dflt0[rite] ) || + ( dflt0[top] && !dflt0[bot] ) || + ( !dflt0[top] && dflt0[bot] ) + } + } > > X <- cbind(train$x1,train$x2); > y <- (train$y==1); > > plot(X,type='n',xlab="FICO Score",ylab="P-Index"); > points(X[y,],pch='o',col="red"); > points(X[!y,],pch='o',col="green"); > points(grid[dflt,],pch='.',col="red"); > points(grid[!dflt,],pch='.',col="green"); > points(grid[edge,],pch='+',col="black",cex=0.4); > > dev.off() null device 1 > > proc.time() user system elapsed 2.614 0.048 2.660