Ciao a tutti,

è la prima volta che scrivo su questo forum e vi chiedo una grossa mano per risolvere un problema.

 In particolare il quesito riguarda la clusterizzazione di un database (chiamato factors) di una lista di fondi di investimento composta da 544 individui e 7 variabili che sono delle componenti principali trovate precedentemente. il mio obiettivo è la clusterizzazione attraverso la combinazione di un k means all’interno di un algortimo genetico. Ho provato ad implementare un codice in R ma senza risultato. qualcuno ha fatto qualche precedente lavoro con gli algoritmi genetici e riesce a trovare l'errore nel seguente codice?

p.s la funzione di fitness è l'indice Davies-Bouldin che massimizza la distanza inter cluster e minimizza quella intra cluster.

Vi ringrazio in anticipo

##AGGIUNTO COLONNA CON 0 RANDOM CON DISTRIBUZIONE BINOMIALE
set.seed(7)
CHROMOSOME<-rbinom(n =544, size = 1, prob = 7/544)
CHROMOSOME
summary(CHROMOSOME)
ds_comb<-cbind(CHROMOSOME,Factors)
ds_comb


#ga##problema principale
install.packages("GA")
library(GA)
install.packages("clusterSim")
library(clusterSim)
##DEFINIZIONE FUNCTION DI FITNESS
DBI <- function(x) {
if(sum(x)==nrow(ds_comb) | sum(x)==0){
score <- 0 }
else {
clus <- kmeans(ds_comb, sum(ds_comb[,1]))
dbi <- index.DB (ds_comb,cl=clus$clusters, centrotypes = "centroids")
score <-dbi$DB
}

return(score)
}
#GENETIC ALGORITHM
g<- ga(type ="real-valued",fitness = DBI,min =-3,max = 3,popSize = 100,run = 100,maxiter = 400)
g
summary(g)
plot(g)
g@solution
g@fitnessValue

Visualizzazioni: 58

Rispondi

Social

 

Gruppi

© 2018   Creato da Duccio Schiavon.   Tecnologia

Badge  |  Segnala un problema  |  Politica sulla privacy  |  Termini del servizio