Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #b <- commandArgs()
- #data <- read.delim(b[6], header=TRUE, sep = ",", dec=".", fill = TRUE, comment.char="")
- #mindensity <- as.numeric(b[7])
- #tol <- as.numeric(b[8])
- #ctol <- as.numeric(b[9])
- #width <- as.numeric(b[10])
- data <- read.delim("iris.txt", header=TRUE, sep = ",", dec=".", fill = TRUE, comment.char="")
- mindensity <- .3
- tol <- 0.0001
- ctol <- .5
- width <- .45
- len <- length(data[1,])-1
- coef <- 1/(length(data[,1])*width^len)
- coef2 <- (1/((2*pi)^(len/2)))
- coef3 <- 1/(length(data[,1])*width^(len+2))
- denom <- 2*width^2
- attractors <- data[,1:len]
- for(i in 1:length(data[,1])) {
- print(i)
- xt <- data[i,1:len]
- xt1 <- data[i,1:len]
- while(1) {
- sumk <- array(0,dim=len)
- for(j in 1:length(data[,1])) {
- sumk <- sumk + (coef2 * exp((-1*(as.numeric(dist(rbind(xt,data[j,1:len]),method="euclidean")))^2)/denom)) * (data[j,1:len] - xt)
- }
- xt1 <- xt + mindensity*coef3*sumk
- if(dist(rbind(xt1,xt),method="euclidean") <= tol) break
- xt <- xt1
- }
- sumk <- 0
- for(j in 1:length(data[,1])) {
- sumk <- sumk + coef2 * exp((-1*(as.numeric(dist(rbind(xt1,data[j,1:len]),method="euclidean")))^2)/denom)
- }
- if((coef * sumk) < mindensity) {
- attractors[i,] <- array(Inf, dim=len)
- } else {
- attractors[i,] <- xt1
- }
- }
- for(i in 1:length(attractors[,1])) {
- if(attractors[i,1] == Inf){
- min <- Inf
- xt <- data[i,1:len]
- for(j in 1:length(attractors[,1])) {
- if(dist(rbind(data[i,1:len],attractors[j,]),method="euclidean") < min) {
- min <- dist(rbind(data[i,1:len],attractors[j,]),method="euclidean")
- xt <- attractors[j,]
- }
- }
- attractors[i,] <- xt
- }
- }
- dens_attractors <- list()
- clusters <- array(0,dim=length(data[,1]))
- c_cluster <- 0
- for(i in 1:length(data[,1])) {
- if(clusters[i] == 0) {
- dens_attractors[length(dens_attractors)+1] <- i
- c_cluster <- c_cluster + 1
- clusters[i] <- c_cluster
- for(j in i:length(attractors[,1])) {
- if(clusters[j] == c_cluster) {
- for(k in i:length(attractors[,1])) {
- if(clusters[k] == 0)
- if(dist(rbind(attractors[j,],attractors[k,]),method="euclidean") <= ctol)
- clusters[k] <- c_cluster
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment