Advertisement
Guest User

Untitled

a guest
Nov 26th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.39 KB | None | 0 0
  1. # Code Question 2.1 (and 2.2 if you set k = 2 and uncomment code)
  2. function ISOMAP(X,k=3)
  3.     n = size(X,1)
  4.  
  5.     # Compute all distances
  6.    
  7.     D = geodisic_distance(X,k)
  8.  
  9.     # Initialize low-dimensional representation with PCA
  10.     model = PCA(X,2)
  11.     Z = model.compress(X)
  12.  
  13.     funObj(z) = stress(z,D)
  14.  
  15.     Z[:] = findMin(funObj,Z[:])
  16.  
  17.     return Z
  18. end
  19.  
  20. function geodisic_distance(X, k)
  21.     n = size(X,1)
  22.     D = distancesSquared(X,X)
  23.     D = sqrt.(abs.(D))
  24.     Knn = fill(Inf, (n,n))
  25.  
  26.     for i in 1:n
  27.         x = sortperm(D[i,:])
  28.         kNeighbours = x[2:k+1]
  29.  
  30.         for idx in kNeighbours
  31.             Knn[i,idx] = D[i,idx]
  32.             Knn[idx, i] = D[idx, i]
  33.             @assert(D[i,idx] == D[idx,i])
  34.         end
  35.     end
  36.  
  37.     toReturn = zeros(n,n)
  38.  
  39.     for i in 1:n
  40.         for j in 1:n
  41.             toReturn[i,j] = dijkstra(Knn,i,j)
  42.             end
  43.         end
  44.     end
  45.  
  46.     # Set Inf distances to max distance in toReturn for Q 2.2
  47.     # Uncomment out this section for 2.2
  48.     #max = 0
  49.     #for i in 1:n
  50.     #    for j in 1:n
  51.     #        val = toReturn[i,j]
  52.     #        if (val > max && val != Inf)
  53.     #            max = val
  54.     #        end
  55.     #    end
  56.     #end
  57.  
  58.     #for i in 1:n
  59.     #    for j in 1:n
  60.     #        if (toReturn[i,j] == Inf)
  61.     #            toReturn[i,j] = max
  62.     #        end
  63.     #    end
  64.     #end
  65.  
  66.     return toReturn
  67. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement