Skip to content
Snippets Groups Projects
Commit 4bc1dd76 authored by Felix Ramnelöv's avatar Felix Ramnelöv
Browse files

Lab 3: Added files

parent c189dc40
No related branches found
No related tags found
No related merge requests found
...@@ -27,6 +27,7 @@ mse <- function(y, y_hat) ...@@ -27,6 +27,7 @@ mse <- function(y, y_hat)
train_pred <- predict(model, train) train_pred <- predict(model, train)
test_pred <- predict(model, test) test_pred <- predict(model, test)
print(paste("MSE on the training data:", mse(train$Fat, train_pred))) print(paste("MSE on the training data:", mse(train$Fat, train_pred)))
print(paste("MSE on the test data:", mse(test$Fat, test_pred))) print(paste("MSE on the test data:", mse(test$Fat, test_pred)))
...@@ -82,8 +83,11 @@ fit <- cv.glmnet(as.matrix(X_train), y_train, alpha = 1) ...@@ -82,8 +83,11 @@ fit <- cv.glmnet(as.matrix(X_train), y_train, alpha = 1)
plot(fit, xvar = "lambda", label = TRUE) plot(fit, xvar = "lambda", label = TRUE)
grid() grid()
fit$lambda.min fit$lambda.min
sum(coef(fit, s = "lambda.min")[-1] != 0) # ignore intercept sum(coef(fit, s = "lambda.min")[-1] != 0) # ignore intercept
y_hat = predict(fit, newx = as.matrix(X_test), s = "lambda.min") y_hat = predict(fit, newx = as.matrix(X_test), s = "lambda.min")
......
# Lab 3 block 1 of 732A99/TDDE01/732A68 Machine Learning
# Author: jose.m.pena@liu.se
# Made for teaching purposes
library(kernlab)
set.seed(1234567890)
data(spam)
foo <- sample(nrow(spam))
spam <- spam[foo,]
tr <- spam[1:3000, ]
va <- spam[3001:3800, ]
trva <- spam[1:3800, ]
te <- spam[3801:4601, ]
by <- 0.3
err_va <- NULL
for(i in seq(by,5,by)){
filter <- ksvm(type~.,data=tr,kernel="rbfdot",kpar=list(sigma=0.05),C=i,scaled=FALSE)
mailtype <- predict(filter,va[,-58])
t <- table(mailtype,va[,58])
err_va <-c(err_va,(t[1,2]+t[2,1])/sum(t))
}
filter0 <- ksvm(type~.,data=tr,kernel="rbfdot",kpar=list(sigma=0.05),C=which.min(err_va)*by,scaled=FALSE)
mailtype <- predict(filter0,va[,-58])
t <- table(mailtype,va[,58])
err0 <- (t[1,2]+t[2,1])/sum(t)
err0
filter1 <- ksvm(type~.,data=tr,kernel="rbfdot",kpar=list(sigma=0.05),C=which.min(err_va)*by,scaled=FALSE)
mailtype <- predict(filter1,te[,-58])
t <- table(mailtype,te[,58])
err1 <- (t[1,2]+t[2,1])/sum(t)
err1
filter2 <- ksvm(type~.,data=trva,kernel="rbfdot",kpar=list(sigma=0.05),C=which.min(err_va)*by,scaled=FALSE)
mailtype <- predict(filter2,te[,-58])
t <- table(mailtype,te[,58])
err2 <- (t[1,2]+t[2,1])/sum(t)
err2
filter3 <- ksvm(type~.,data=spam,kernel="rbfdot",kpar=list(sigma=0.05),C=which.min(err_va)*by,scaled=FALSE)
mailtype <- predict(filter3,te[,-58])
t <- table(mailtype,te[,58])
err3 <- (t[1,2]+t[2,1])/sum(t)
err3
# Questions
# 1. Which filter do we return to the user ? filter0, filter1, filter2 or filter3? Why?
# 2. What is the estimate of the generalization error of the filter returned to the user? err0, err1, err2 or err3? Why?
# 3. Implementation of SVM predictions.
sv<-alphaindex(filter3)[[1]]
co<-coef(filter3)[[1]]
inte<- - b(filter3)
k<-NULL
for(i in 1:10){ # We produce predictions for just the first 10 points in the dataset.
k2<-NULL
for(j in 1:length(sv)){
k2<- # Your code here
}
k<-c(k, # Your code here)
}
k
predict(filter3,spam[1:10,-58], type = "decision")
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment