Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Mnn <- function(X,M){
- m <- matrix(0,nrow(X),nrow(X))
- m <- as.data.frame(as.matrix(dist(X)))
- m[row(m)==col(m)] <- Inf
- m <- t(apply(m,1,order)[1:M,])
- m <- as.matrix(m)
- return(m)
- }
- Mnn_graph <- function(S){
- m <- as.data.frame(S)
- m <- mutate(m,Id = 1:nrow(S))
- m <- reshape2::melt(m,id="Id")
- edges <- m[,c(1,3)]
- m <- as.matrix(get.adjacency(graph.data.frame(edges))) #otrrzymujemy macierz sąsiedztwa
- gra <- graph.adjacency(m) #robimy graf z tej macierzy
- com <- components(gra) #szukamy skladowych
- comp <- igraph::groups(com)#zwracamy skladowe
- if(length(comp)==1){
- m <- as.matrix(m)
- return(m)
- }
- elem <- lapply(comp, `[[`, 1) #bierzemy po jednym elemencie z kazdej skladowej aby uspojnic graf
- elem <- unlist(elem)
- for(i in 1:length(elem)){
- m[elem[i-1],elem[i]] <- 1
- m[elem[i],elem[i-1]] <- 1
- }
- m <- as.matrix(m)
- return(m)
- }
- Laplacian_eigen <- function(G,k){
- m <- graph.adjacency(G)
- laplace <- laplacian_matrix(m)
- v <- as.double(unlist(eigen(laplace)[2]))
- var <- sqrt(length(v))
- v <- matrix(v,var,var)[,2:k+1]
- return(v)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement