【问题标题】:Error using predict with klaR package, NaiveBayes使用带有 klaR 包的预测时出错,NaiveBayes
【发布时间】:2013-01-16 06:01:56
【问题描述】:

我正在使用klaR 包的predict 方法,如帖子Naive bayes in R 中所述:

nb_testpred <- predict(mynb, newdata=testdata).

nb_testpred 是我的朴素贝叶斯模型,在traindata 上开发; testdata 是剩余的数据。

但是,我收到此错误:

Error in FUN(1:10[[4L]], ...) : subscript out of bounds

我不确定发生了什么 - testdata 的行数比 traindata 少,但列数相同。

作为参考,我的代码如下所示:

ind       <- sample(2, nrow(mydata), replace=TRUE, prob=c(0.9,0.1))
traindata <- mydata[ind==1,]
testdata  <- mydata[ind==2,]
myformula <- as.factor(dep) ~ X1 + as.factor(X2) + as.factor(X3) + as.factor(X4) + X5 + as.factor(X6) + as.factor(date) + as.factor(hour)
mynb        <- NaiveBayes(myformula, data=traindata)
nb_testpred <- predict(mynb, newdata=testdata) #where I'm getting an error...

这里有一个数据样本(原始文件有 100,000+ 行):

sampledata <- structure(list(dep = c(1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), X1 = structure(c(2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L), .Label = c("A", "B"), class = "factor"), X2 = c(200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 
200L, 200L), X3 = structure(c(4L, 2L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L), .Label = c(".", "1400000", "2400000", "900000"), class = "factor"), X4 = c(0L, 0L, 0L, 3L, 4L, 5L, 5L, 5L, 5L, 0L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 0L), X5 = c(TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), X6 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L),     date = structure(c(1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L), .Label = c("9/23/2012", 
"9/24/2012"), class = "factor"), hour = c(18L, 17L, 23L, 8L, 1L, 19L, 19L, 16L, 22L, 2L, 12L, 16L, 15L, 9L, 1L, 9L, 
13L, 19L)), .Names = c("dep", "X1", "X2", "X3", "X4", "X5", "X6", "date", "hour"), class = "data.frame", row.names = c(NA, -18L))

任何帮助将不胜感激!

【问题讨论】:

  • 您可以尝试使用dput(mydata) 生成一个可重现的示例吗? (如果你的数据太大,只选择几行,看看是否出现同样的错误,然后提供缩短的数据)。
  • 或者你可以模拟一些数据并分享。 stackoverflow.com/questions/5963269/…

标签: r bayesian predict


【解决方案1】:

您可以如下操作:

traindata$dep=factor(traindata$dep)
mynb <- NaiveBayes(dep~.,traindata)

然后它可以工作,但是您应该优化数据以避免出现常量列。

【讨论】:

    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 2017-04-14
    • 2018-10-31
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多