Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 1 a and b
- errs = zeros(56)
- errs2 = zeros(56)
- lambda = [0 2.0^-1 2^0 2^1 2^2 2^3 2^4]
- for i in 1:size(combs)[1]
- two = setdiff(collect(1:8), combs[i,:][1])
- testX = reshape(sets[combs[i,:][1],:,:], (6*16,9))
- testy = reshape(ys[combs[i,:][1],:], (6*16,1))
- y1 = ys[two[1],:]
- y2 = ys[two[2],:]
- #1 a
- U, S, V = svd(testX)
- diagS = Diagonal(S)
- err1 = zeros(9)
- w = zeros(9,9)
- err2 = zeros(9)
- for k in 1:9
- kS = copy(S)
- kS = kS.^-1
- kS = Diagonal(kS)
- for j in k:8
- kS[j+1,j+1] = 0
- end
- w[k,:] = V*kS*U'*testy
- #println(w[k,:])
- # predict
- preds1 = sets[two[1],:,:]*w[k,:]
- #println(sign(preds1))
- preds2 = sets[two[2],:,:]*w[k,:]
- # find errors
- err1[k] = error(preds1, y1)
- err2[k] = error(preds2, y2)
- #println("err1: $(err1[k]), err2: $(err2[k])")
- end
- minidx1 = indmin(err1)
- minidx2 = indmin(err2)
- #print(minidx1)
- #println(err1)
- preds1 = sets[two[2],:,:]*w[minidx1,:]
- preds2 = sets[two[1],:,:]*w[minidx2,:]
- errs[2*i-1] = error(preds1, y2)
- errs[2*i] = error(preds2, y1)
- #println("err1: $(errs[2*i-1]), err2: $(errs[2*i])")
- #1b
- err1 = zeros(length(lambda))
- w = zeros(length(lambda),9)
- err2 = zeros(length(lambda))
- for l in 1:length(lambda)
- w[l,:] = (V*diagS^2*V' + lambda[l]*eye(9, 9))^-1*V*diagS*U'*testy
- # predict
- preds1 = sets[two[1],:,:]*w[l,:]
- #println(sign(preds1))
- preds2 = sets[two[2],:,:]*w[l,:]
- # find errors
- err1[l] = error(preds1, y1)
- err2[l] = error(preds2, y2)
- end
- minidx1 = indmin(err1)
- minidx2 = indmin(err2)
- #print(minidx1)
- #println(err1)
- preds1 = sets[two[2],:,:]*w[minidx1,:]
- preds2 = sets[two[1],:,:]*w[minidx2,:]
- errs2[2*i-1] = error(preds1, y2)
- errs2[2*i] = error(preds2, y1)
- end
- avgErr = sum(errs)/56.0
- avgErr2 = sum(errs2)/56.0
- println("Average error 1a: $(avgErr)")
- println("Average error 1b: $(avgErr2)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement