Advertisement
Guest User

Untitled

a guest
Nov 8th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 2.18 KB | None | 0 0
  1. # 1 a and b
  2. errs = zeros(56)
  3. errs2 = zeros(56)
  4. lambda = [0 2.0^-1 2^0 2^1 2^2 2^3 2^4]
  5. for i in 1:size(combs)[1]
  6.     two = setdiff(collect(1:8), combs[i,:][1])
  7.     testX = reshape(sets[combs[i,:][1],:,:], (6*16,9))
  8.     testy = reshape(ys[combs[i,:][1],:], (6*16,1))
  9.    
  10.     y1 = ys[two[1],:]
  11.     y2 = ys[two[2],:]
  12.    
  13.     #1 a
  14.     U, S, V = svd(testX)
  15.     diagS = Diagonal(S)
  16.     err1 = zeros(9)
  17.     w = zeros(9,9)
  18.     err2 = zeros(9)
  19.     for k in 1:9
  20.         kS = copy(S)
  21.         kS = kS.^-1
  22.         kS = Diagonal(kS)  
  23.         for j in k:8
  24.             kS[j+1,j+1] = 0
  25.         end
  26.         w[k,:] = V*kS*U'*testy
  27.        #println(w[k,:])
  28.        
  29.        # predict
  30.        preds1 = sets[two[1],:,:]*w[k,:]
  31.        #println(sign(preds1))
  32.        preds2 = sets[two[2],:,:]*w[k,:]
  33.        
  34.        # find errors
  35.        err1[k] = error(preds1, y1)
  36.        err2[k] = error(preds2, y2)
  37.        #println("err1: $(err1[k]), err2: $(err2[k])")
  38.    end
  39.    minidx1 = indmin(err1)
  40.    minidx2 = indmin(err2)
  41.    #print(minidx1)
  42.    #println(err1)
  43.    
  44.    preds1 = sets[two[2],:,:]*w[minidx1,:]
  45.    preds2 = sets[two[1],:,:]*w[minidx2,:]
  46.    
  47.    errs[2*i-1] = error(preds1, y2)
  48.    errs[2*i] = error(preds2, y1)
  49.    #println("err1: $(errs[2*i-1]), err2: $(errs[2*i])")
  50.    
  51.    
  52.    #1b
  53.    
  54.    err1 = zeros(length(lambda))
  55.    w = zeros(length(lambda),9)
  56.    err2 = zeros(length(lambda))
  57.    for l in 1:length(lambda)
  58.        w[l,:] = (V*diagS^2*V' + lambda[l]*eye(9, 9))^-1*V*diagS*U'*testy
  59.        
  60.        # predict
  61.        preds1 = sets[two[1],:,:]*w[l,:]
  62.        #println(sign(preds1))
  63.        preds2 = sets[two[2],:,:]*w[l,:]
  64.        
  65.        # find errors
  66.        err1[l] = error(preds1, y1)
  67.        err2[l] = error(preds2, y2)
  68.    end
  69.    
  70.    minidx1 = indmin(err1)
  71.    minidx2 = indmin(err2)
  72.    #print(minidx1)
  73.    #println(err1)
  74.    
  75.    preds1 = sets[two[2],:,:]*w[minidx1,:]
  76.    preds2 = sets[two[1],:,:]*w[minidx2,:]
  77.    
  78.    errs2[2*i-1] = error(preds1, y2)
  79.    errs2[2*i] = error(preds2, y1)
  80.    
  81. end
  82. avgErr = sum(errs)/56.0
  83. avgErr2 = sum(errs2)/56.0
  84. println("Average error 1a: $(avgErr)")
  85. println("Average error 1b: $(avgErr2)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement