Mike Schumacher
2011-Feb-08 01:20 UTC
[R] Naive Bayes Issue - Can't Predict - Error is "Error in log(sapply(attribs...)
Hey guys, I can't get my Naive Bayes model to predict. Forgive me if its simple... I've tried about everything and can't get it to work. Reproduceable code below. Thank you, Mike -- Michael Schumacher Manager Data & Analytics - ValueClick mike.schumacher@gmail.com * Functional Example Code from UCLA: http://www.stat.ucl.ac.be/ISdidactique/Rhelp/library/e1071/html/predict.naiveBayes.html * install.packages('e1071') install.packages('mlbench') library(e1071) library(mlbench) data(HouseVotes84) model <- naiveBayes(Class ~ ., data = HouseVotes84) predict(model, HouseVotes84[1:10,-1]) *My Code That Errors:* resp<-c(0,0,0,0,0,0,0,0,0,1,1,1,1,1,1) var <-c('y','n','y','y','y','n','y','y','y','n','n','n','n','n','y') temp<-data.frame(resp,var) print(temp) model<-naiveBayes(resp~.,data=temp) model predict(model,temp[,-1]) #Error: #Error in log(sapply(attribs, function(v) { : #Non-numeric argument to mathematical function [[alternative HTML version deleted]]
Peter Ehlers
2011-Feb-08 14:50 UTC
[R] Naive Bayes Issue - Can't Predict - Error is "Error in log(sapply(attribs...)
Mike, I think that predict.naiveBayes() wants 'newdata' in the form of a list or data.frame. You'll find the same problem if you reduce the HouseVotes84 data set to just one predictor. This should work for you: predict(model,temp[,-1, drop=FALSE]) or, if you prefer: predict(model, list(var = temp[, -1]) (With a two-variable data.frame, you might prefer temp[, 2] over temp[, -1].) Peter Ehlers On 2011-02-07 17:20, Mike Schumacher wrote:> Hey guys, > > I can't get my Naive Bayes model to predict. Forgive me if its simple... > I've tried about everything and can't get it to work. Reproduceable code > below. > > Thank you, > > MikeFunctional Example Code from UCLA: http://www.stat.ucl.ac.be/ISdidactique/Rhelp/library/e1071/html/predict.naiveBayes.html * install.packages('e1071') install.packages('mlbench') library(e1071) library(mlbench) data(HouseVotes84) model <- naiveBayes(Class ~ ., data = HouseVotes84) predict(model, HouseVotes84[1:10,-1]) *My Code That Errors:* resp<-c(0,0,0,0,0,0,0,0,0,1,1,1,1,1,1) var <-c('y','n','y','y','y','n','y','y','y','n','n','n','n','n','y') temp<-data.frame(resp,var) print(temp) model<-naiveBayes(resp~.,data=temp) model predict(model,temp[,-1]) #Error: #Error in log(sapply(attribs, function(v) { : #Non-numeric argument to mathematical function