[英]How to fix predict.naive_bayes using no features for prediction in R
[英]Select Features for Naive Bayes Clasification in R
我想使用朴素貝葉斯分類器進行一些預測。 到目前為止,我可以使用R中的以下(示例)代碼進行預測
library(klaR)
library(caret)
Faktor<-x <- sample( LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
alter<-abs(rnorm(10000,30,5))
HF<-abs(rnorm(10000,1000,200))
Diffalq<-rnorm(10000)
Geschlecht<-sample(c("Mann","Frau", "Firma"),10000,replace=TRUE)
data<-data.frame(Faktor,alter,HF,Diffalq,Geschlecht)
set.seed(5678)
flds<-createFolds(data$Faktor, 10)
train<-data[-flds$Fold01 ,]
test<-data[flds$Fold01 ,]
features <- c("HF","alter","Diffalq", "Geschlecht")
formel<-as.formula(paste("Faktor ~ ", paste(features, collapse= "+")))
nb<-NaiveBayes(formel, train, usekernel=TRUE)
pred<-predict(nb,test)
test$Prognose<-as.factor(pred$class)
現在我想通過功能選擇來改進這個模型。 我的真實數據大約有100個功能。 所以我的問題是,選擇最重要的朴素貝葉斯分類特征的最佳方法是什么? 有沒有紙張參考?
我嘗試了以下代碼行,不幸的是,這不起作用
rfe(train[, 2:5],train[, 1], sizes=1:4,rfeControl = rfeControl(functions = ldaFuncs, method = "cv"))
編輯:它給我以下錯誤信息
Fehler in { : task 1 failed - "nicht-numerisches Argument für binären Operator"
Calls: rfe ... rfe.default -> nominalRfeWorkflow -> %op% -> <Anonymous>
因為這是德語,您可以在您的機器上重現這一點
如何調整rfe()
調用以獲得遞歸功能消除?
此錯誤似乎是由於ldaFuncs
。 顯然他們在使用矩陣輸入時不喜歡因素。 可以使用您的測試數據重新創建主要問題
mm <- ldaFuncs$fit(train[2:5], train[,1])
ldaFuncs$pred(mm,train[2:5])
# Error in FUN(x, aperm(array(STATS, dims[perm]), order(perm)), ...) :
# non-numeric argument to binary operator
如果你包含因子變量,這似乎只會發生。 例如
mm <- ldaFuncs$fit(train[2:4], train[,1])
ldaFuncs$pred(mm,train[2:4])
不會返回相同的錯誤(並且似乎正常工作)。 同樣,當您使用矩陣語法時,這似乎只是一個問題。 如果使用公式/數據語法,則不會出現相同的問題。 例如
mm <- ldaFuncs$fit(Faktor ~ alter + HF + Diffalq + Geschlecht, train)
ldaFuncs$pred(mm,train[2:5])
似乎按預期工作。 這意味着您有幾個不同的選擇。 您可以使用rfe()
公式語法
rfe(Faktor ~ alter + HF + Diffalq + Geschlecht, train, sizes=1:4,
rfeControl = rfeControl(functions = ldaFuncs, method = "cv"))
或者你可以用類似的東西自己擴展虛擬變量
train.ex <- cbind(train[,1], model.matrix(~.-Faktor, train)[,-1])
rfe(train.ex[, 2:6],train.ex[, 1], ...)
但是這不記得哪個變量在同一個因子中配對,因此它並不理想。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.