首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >伯努利vs Adaboost?

伯努利vs Adaboost?
EN

Stack Overflow用户
提问于 2015-11-18 01:34:16
回答 2查看 728关注 0票数 0

我真的不太明白实际分配的区别= Adaboost或bernoulli

代码语言:javascript
复制
   library(MASS)
   library(gbm)
   data=Boston
   data$chas = factor(data$chas)
   ada_model = gbm(chas~ . , data, distribution ='adaboost')
   bern_model = gbm(chas ~ . , data, distribution = 'bernoulli')
   ada_model
   bern_model

我不明白为什么伯努利没有给出任何结果?我想我对它的工作原理有一个根本性的误解?

我在寻找: 1.解释为什么bernoulli不能工作。我以为文档说这可以用于分类? 2。如果它们都可以用于分类,实际区别是什么?

EN

回答 2

Stack Overflow用户

发布于 2015-11-18 08:10:20

伯努利正在为您打破,因为factor调用将0/1重新编码为1/2:

代码语言:javascript
复制
> str(factor(data$chas[350:400]))
Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 2 2 2 ...
票数 0
EN

Stack Overflow用户

发布于 2016-05-25 05:58:01

代码语言:javascript
复制
> str(data$chas)
 int [1:506] 0 0 0 0 0 0 0 0 0 0 ...
> sum(data$chas==0) + sum(data$chas==1)
[1] 506

当前有506个整数,它们要么都是0,要么都是1。没什么可做的。根据@Neal Fultz在他的原始评论中的建议和在他的回答中的解释,删除第4行。如果您希望显式地将变量绑定到{0,1},则可以使用as.logical,您的代码将变为:

代码语言:javascript
复制
library(MASS)
library(gbm)
data=Boston
data$chas = as.logical(data$chas) # optionally cast as logical to force range into 0 or 1
ada_model = gbm(chas~ . , data, distribution ='adaboost')
bern_model = gbm(chas ~ . , data, distribution = 'bernoulli')
ada_model
bern_model

从字里行间读出一点,我猜你真正的问题是你的生产数据集的值不是{0,1}。将它们转换为logical会将它们转换为TRUE (1),然后就可以开始使用了。如果这不是你想要的,那么使用这个来找到它们并逐个检查它们:

代码语言:javascript
复制
which((data$chas != 0) & (data$chas != 1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33763428

复制
相关文章

相似问题

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