首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熵输出是某些类解的NaN,而不是另一些类的解。

熵输出是某些类解的NaN,而不是另一些类的解。
EN

Stack Overflow用户
提问于 2020-04-19 09:50:22
回答 1查看 327关注 0票数 0

我在R中运行一个潜在类分析,并使用熵函数。我想了解为什么在输出中,它为较低的Nclasses生成一个结果,然后为更高的nclasses生成一个NaN。

我是一个软件初学者!

这里供参考的是输出和代码:

代码语言:javascript
复制
> entropy<-function (p) sum(-p*log(p))
> error_prior <- entropy(France_2class$P) # Class proportions
> error_post <- mean(apply(France_2class$posterior, 1, entropy))
> R2_entropy <- (error_prior - error_post) / error_prior
> R2_entropy
[1] 0.8121263
> 
> entropy<-function (p) sum(-p*log(p))
> error_prior <- entropy(France_3class$P) # Class proportions
> error_post <- mean(apply(France_3class$posterior, 1, entropy))
> R2_entropy <- (error_prior - error_post) / error_prior
> R2_entropy
[1] 0.8139903
> 
> entropy<-function (p) sum(-p*log(p))
> error_prior <- entropy(France_4class$P) # Class proportions
> error_post <- mean(apply(France_4class$posterior, 1, entropy))
> R2_entropy <- (error_prior - error_post) / error_prior
> R2_entropy
[1] NaN
> 
> entropy<-function (p) sum(-p*log(p))
> error_prior <- entropy(France_5class$P) # Class proportions
> error_post <- mean(apply(France_5class$posterior, 1, entropy))
> R2_entropy <- (error_prior - error_post) / error_prior
> R2_entropy
[1] NaN
> 
> entropy<-function (p) sum(-p*log(p))
> error_prior <- entropy(France_6class$P) # Class proportions
> error_post <- mean(apply(France_6class$posterior, 1, entropy))
> R2_entropy <- (error_prior - error_post) / error_prior
> R2_entropy
[1] NaN

有人能帮忙吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-19 10:52:19

我想问题来自于entropy的定义。更准确地说,如果0包含在p中,那么您将获得NaN,例如,

代码语言:javascript
复制
> entropy(p1)
[1] 1.279854

> entropy(p2)
[1] NaN

> entropy(p3)
[1] 0.5004024

要修复它,可以将na.omit添加到entropy函数中,如下所示

代码语言:javascript
复制
entropy<-function(p) sum(na.omit(-p*log(p)))

然后你就可以看到

代码语言:javascript
复制
> entropy(p1)
[1] 1.279854

> entropy(p2)
[1] 0.5004024

> entropy(p3)
[1] 0.5004024

数据

代码语言:javascript
复制
p1 <- c(0.1,0.2,0.3,0.4)
p2 <- c(0,0.2,0.8)
p3 <- c(0.2,0.8)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61302401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档