首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误: C5.0模型需要一个因子结果

错误: C5.0模型需要一个因子结果
EN

Stack Overflow用户
提问于 2017-10-04 15:28:51
回答 1查看 3K关注 0票数 0

我有这样的数据:

代码语言:javascript
复制
     IntensityRisk Depth  Mag  smaj  smin
           <fctr> <int>  <int> <int> <int>
 1             2     2     3     2     2
 2             3     1     3     2     2
 3             3     1     3     2     2
 4             3     1     1     2     2
 5             3     1     1     2     2
 6             2     2     3     2     2
 7             3     1     3     2     2
 8             3     1     3     2     2
 9             3     1     3     2     2
10             2     2     3     2     2

我采取了以下步骤:

代码语言:javascript
复制
gempaDF <- gempa[order(runif(nrow(gempa))),]
str(gempaDF$IntensityRisk)
tail(gempaDF,5)
gempaTrain <- gempaDF[1:4000,]
gempaTest <- gempaDF[4001:4471,]
C50_model <- C5.0(gempaTrain[,-1], gempaTrain[,1])

会犯这样的错误:

代码语言:javascript
复制
Error in C5.0.default(gempaTrain[, -1], gempaTrain[, 1]) : 
  C5.0 models require a factor outcome

我已将其改为:

代码语言:javascript
复制
C50_model <- C5.0(gempaTrain[,-1], gempaTrain[,as.factor(gempaDF$IntensityRisk)])

再犯错误:

代码语言:javascript
复制
Error: Unsupported index type: factor

然后我试着把它改为:

代码语言:javascript
复制
gempaDF <- gempa[order(runif(nrow(gempa))),]
gempaDF$IntensityRisk <- as.factor(gempaDF$IntensityRisk)
str(gempaDF$IntensityRisk)
tail(gempaDF,5)
gempaTrain <- gempaDF[1:4000,]
gempaTest <- gempaDF[4001:4471,]
C50_model <- C5.0(gempaTrain[,-1], gempaTrain[,1])

但是仍然会出现这样的错误:

代码语言:javascript
复制
Error in C5.0.default(gempaTrain[, -1], gempaTrain[, 1]) : 
  C5.0 models require a factor outcome

我也在尝试:

代码语言:javascript
复制
C50_model <- C5.0(gempaTrain[,-1], gempaTrain[,gempaDF$IntensityRisk])

但还是会犯错误

代码语言:javascript
复制
Error: Unsupported index type: factor

有人知道我哪里做错了吗?我很感激你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-04 18:54:18

我将使用以下示例数据(因为我无法访问您的数据)

代码语言:javascript
复制
set.seed(1)
dat = tibble::as_tibble(list(IntensityRisk = sample(1:5, 30, replace = T), Depth = sample(1:100, 30, replace = T), Mag = sample(1:100, 30, replace = T)))

table(dat$IntensityRisk)
 1  2  3  4  5 
 4 11  2  7  6 


# convert the response to factor,

dat$IntensityRisk = as.factor(dat$IntensityRisk)

str(dat)

Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   30 obs. of  3 variables:
 $ IntensityRisk: Factor w/ 5 levels "1","2","3","4",..: 2 2 3 5 2 5 5 4 4 1 ...
 $ Depth        : int  49 60 50 19 83 67 80 11 73 42 ...
 $ Mag          : int  92 30 46 34 66 26 48 77 9 88 ...

如果我使用,我会得到一个类似的错误,

代码语言:javascript
复制
fit = C50::C5.0(dat1[, -1], dat1[, 1])

Error in C5.0.default(dat[, -1], dat[, 1]) : 
  C5.0 models require a factor outcome 

如果我转换成数据文件,

代码语言:javascript
复制
dat1 = as.data.frame(dat)

str(dat1)

'data.frame':   30 obs. of  3 variables:
 $ IntensityRisk: Factor w/ 5 levels "1","2","3","4",..: 2 2 3 5 2 5 5 4 4 1 ...
 $ Depth        : int  49 60 50 19 83 67 80 11 73 42 ...
 $ Mag          : int  92 30 46 34 66 26 48 77 9 88 ...

该函数运行无错误,

代码语言:javascript
复制
fit = C50::C5.0(dat1[, -1], dat1[, 1])

> fit

Call:
C5.0.default(x = dat1[, -1], y = dat1[, 1])

Classification Tree
Number of samples: 30 
Number of predictors: 2 

Tree size: 8 

Non-standard options: attempt to group attributes
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46568648

复制
相关文章

相似问题

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