Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Map 1-based optional input ports to variables
- data.songs <- maml.mapInputPort(1) # class: data.frame
- data.toUse <- (data.songs[,!(names(data.songs) %in% c("user"))])
- getCosine <- function(x,y)
- {
- this.cosine <- sum(x*y) / (sqrt(sum(x*x)) * sqrt(sum(y*y)))
- return(this.cosine)
- }
- data.similarity <- matrix(NA, nrow=ncol(data.toUse),
- ncol=ncol(data.toUse),
- dimnames=list(colnames(data.toUse),
- colnames(data.toUse)))
- for(i in 1:ncol(data.toUse)) {
- # Loop through the columns for each column
- for(j in 1:ncol(data.toUse)) {
- # Fill in placeholder with cosine similarities
- data.similarity[i,j] <- getCosine(as.matrix(data.toUse[i]),
- as.matrix(data.toUse[j]))
- }
- }
- data.neighbours <- matrix(NA, nrow=ncol(data.similarity),
- ncol=11,dimnames=list(colnames(data.similarity)))
- for(i in 1:ncol(data.toUse))
- {
- data.neighbours[i,] <-
- t(head(n=11,
- rownames(as.matrix((data.similarity[order(data.similarity[,i],
- decreasing = TRUE),][,i])))))
- }
- data.neighbours = as.data.frame(data.neighbours)
- # Select data.frame to be sent to the output Dataset port
- maml.mapOutputPort("data.neighbours");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement