setwd("./data")
train<-read.csv("sonar_train.csv",header=F)
test<-read.csv("sonar_test.csv",header=F)
setwd("../")
library(class)
# create x and y training vars
y<-as.factor(train[,61])
x<-train[,1:60]
# create x and y test vars
y_test<-as.factor(test[,61])
x_test<-test[,1:60]
iter<-10
errors<-matrix(data=NA,nrow=iter,ncol=3)
colnames(errors)<-c("k","train","test")
for(i in 1:iter){
errors[i,1]<-i
# fit model on training data
fit.tr<-knn(x,x,cl=y,k=i)
# calculate/log training error
errors[i,2]<-1-sum(y==fit.tr)/length(y)
# fit model on test data
fit.te<-knn(x,x_test,y,k=i)
# calculate/log test error
errors[i,3]<-1-sum(y_test==fit.te)/length(y_test)
}
plot(errors[,2]~errors[,1],type="l",col="blue",
main="Sonar KNN Train & Test Errors (Michael Downs)",
xlab="k",ylab="error rate",ylim=c(0,0.4),lwd=3)
lines(errors[,3]~errors[,1],type="l",col="red4",lwd=3)
legend("bottomright",col=c("blue","red4"),lwd=3,
legend=c("training error","test error"))
minVal<-errors[which.min(errors[,3]),3]
minK<-errors[which.min(errors[,3]),1]
print(c("Lowest test error of ",round(minVal,3),"and k of ",minK))
## test
## "Lowest test error of " "0.167" "and k of "
## k
## "2"
errors1<-errors
setwd("./data")
train<-read.csv("sonar_train.csv",header=F)
test<-read.csv("sonar_test.csv",header=F)
setwd("../")
library(class)
# create x and y training vars
y<-as.factor(train[,61])
x<-train[,1:60]
# create x and y test vars
y_test<-as.factor(test[,61])
x_test<-test[,1:60]
iter<-10
errors<-matrix(data=NA,nrow=iter,ncol=3)
colnames(errors)<-c("k","train","test")
for(i in 1:iter){
errors[i,1]<-i
# fit model on training data
fit.tr<-knn(x,x,cl=y,k=i)
# calculate/log training error
errors[i,2]<-1-sum(y==fit.tr)/length(y)
# fit model on test data
fit.te<-knn(x,x_test,y,k=i)
# calculate/log test error
errors[i,3]<-1-sum(y_test==fit.te)/length(y_test)
}
plot(errors[,2]~errors[,1],type="l",col="blue",
main="Sonar KNN Train & Test Errors (Michael Downs)",
xlab="k",ylab="error rate",ylim=c(0,0.4),lwd=3)
lines(errors[,3]~errors[,1],type="l",col="red1",lwd=3)
lines(errors1[,2]~errors1[,1],type="l",col="light blue",lwd=3,lty=2)
lines(errors1[,3]~errors1[,1],type="l",col="red4",lwd=3,lty=2)
legend("bottomright",col=c("blue","lightblue","red4","red1"),lwd=3,
legend=c("train error iter2","train error iter1", "test error iter2","test error iter1"))
minVal<-errors[which.min(errors[,3]),3]
minK<-errors[which.min(errors[,3]),1]
print(c("Lowest test error of ",round(minVal,3),"and k of ",minK))
## test
## "Lowest test error of " "0.167" "and k of "
## k
## "4"
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.