Я пробовал несколько часов, чтобы вычислить Энтропию, и я знаю, что что-то упускаю. Надеюсь, кто-то здесь может дать мне идею!Расчет Энтропии
EDIT: Я думаю, что моя формула неправильная!
КОД:
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)
}
Я надеюсь, что мой пост понятно, так как это первый раз, когда я на самом деле пост здесь.
Это мой набор данных:
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
По иронии судьбы, чем хуже вычисление, тем ближе ответ. – Strawberry
Было бы неплохо опубликовать (а) формулу, которую вы считаете правильным, и (б) образец типа данных, который вы будете подавать на эту функцию. Использование 'dput()' - отличный способ обмена данными. – Gregor
Какой ответ вы ожидаете? Ваш код работает без ошибок и правильно вычисляет shannon-entropy. – cdeterman