Hallo! I would need a code for 10-fold cross validation for the classifiers Naive Bayes and svm (e1071) package. Has there already been done something like that? I tried to do it myself by applying the tune function first: library(e1071) tune.control <- tune.control(random =F, nrepeat=1, repeat.aggregate=min.,sampling=c("cross"),sampling.aggregate=mean, cross=10, best.model=T, performances=T) model <- naiveBayes(code~., mydata, tune.control) pred <- predict(model, mydata) table(pred, mydata$code) chisq.test(code, pred) but I get the same results as without tuning it. It would be great if someone could help me with this. thx a lot, Juila -- Psssst! Schon vom neuen GMX MultiMessenger geh?rt? Der kanns mit allen: http://www.gmx.net/de/go/multimessenger
Wayne.W.Jones at shell.com
2007-Sep-25 09:22 UTC
[R] 10- fold cross validation for naive bayes(e1071)
Hi there, The tune function is extremely useful for quickly cross validating a model. However, you often need to modify some of the predict functions. Here is an example of tuning an svm and naiveBayes with the iris data set: naiveBayes: For some reason the naivebayes predict function (getS3method("predict","naiveBayes")) doesnt like it when you pass through the classification variable in the data you want to predict for. See the example in help(naiveBayes). Hence I modify the predict function to delete this variable: "my.predict.NB"<-function(object,newdata){ predict(object,newdata=newdata[,-5],type="class") ### Note here this will be data set specific. ### Here the classification variable "Species" in this case appears in the 5th column of the data, hence I delete it. ### Apologies but culdne tquickly find a way to automate this! } tune(naiveBayes,Species ~ ., data = iris,predict.fun=my.predict.NB) SVM: The predict function for svm seems to work fine. Hence use: obj <- tune(svm, Species~., data = iris, ranges = list(gamma = 2^(-1:1), cost = 2^(2:4))) plot(obj) Hope this helps, Wayne -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]On Behalf Of "Julia Kr?pfl" Sent: 25 September 2007 09:54 To: R-help at r-project.org Subject: [R] 10- fold cross validation for naive bayes(e1071) Hallo! I would need a code for 10-fold cross validation for the classifiers Naive Bayes and svm (e1071) package. Has there already been done something like that? I tried to do it myself by applying the tune function first: library(e1071) tune.control <- tune.control(random =F, nrepeat=1, repeat.aggregate=min.,sampling=c("cross"),sampling.aggregate=mean, cross=10, best.model=T, performances=T) model <- naiveBayes(code~., mydata, tune.control) pred <- predict(model, mydata) table(pred, mydata$code) chisq.test(code, pred) but I get the same results as without tuning it. It would be great if someone could help me with this. thx a lot, Juila -- Psssst! Schon vom neuen GMX MultiMessenger geh?rt? Der kanns mit allen: http://www.gmx.net/de/go/multimessenger ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Reasonably Related Threads
- NAIVE BAYES with 10-fold cross validation
- Different level set when predicting with e1071's Naive Bayes classifier
- weird predict function error when I use naive bayes
- Naive Bayes Issue - Can't Predict - Error is "Error in log(sapply(attribs...)
- naive bayes help