Calcul de l'Entropie
J'ai essayé pendant plusieurs heures pour calculer l'Entropie et je sais que je suis en manque de quelque chose. J'espère que quelqu'un ici peut me donner une idée!!!!
EDIT: je pense que ma formule est mal!
CODE:
info <- function(CLASS.FREQ){
freq.class <- CLASS.FREQ
info <- 0
for(i in 1:length(freq.class)){
if(freq.class[[i]] != 0){ # zero check in class
entropy <- -sum(freq.class[[i]] * log2(freq.class[[i]])) #I calculate the entropy for each class i here
}else{
entropy <- 0
}
info <- info + entropy # sum up entropy from all classes
}
return(info)
}
J'espère que mon post est clair, puisque c'est la première fois que j'ai poster ici.
C'est mon dataset:
buys <- c("no", "no", "yes", "yes", "yes", "no", "yes", "no", "yes", "yes", "yes", "yes", "yes", "no")
credit <- c("fair", "excellent", "fair", "fair", "fair", "excellent", "excellent", "fair", "fair", "fair", "excellent", "excellent", "fair", "excellent")
student <- c("no", "no", "no","no", "yes", "yes", "yes", "no", "yes", "yes", "yes", "no", "yes", "no")
income <- c("high", "high", "high", "medium", "low", "low", "low", "medium", "low", "medium", "medium", "medium", "high", "medium")
age <- c(25, 27, 35, 41, 48, 42, 36, 29, 26, 45, 23, 33, 37, 44) # we change the age from categorical to numeric
source d'informationauteur Codex
Vous devez vous connecter pour publier un commentaire.
En fin de compte je ne trouve pas d'erreur dans votre code comme il s'exécute sans erreur. La partie je pense que vous êtes absent est le calcul de la classe de fréquences et vous aurez votre réponse. Rapidement courir à travers les différents objets que vous fournissez je soupçonne que vous êtes à la recherche à
buys
.Comme une question de l'amélioration de votre code, vous pouvez simplifier cette spectaculaire que vous n'avez pas besoin d'une boucle si vous êtes équipé d'un vecteur de classe de fréquences.
Par exemple:
Comme une note de côté, la fonction
entropy.empirical
est dans leentropy
paquet où vous définissez les unités à log2 permettant un peu plus de souplesse. Exemple: