簡體   English   中英

選擇R中Naive Bayes Clasification的特征

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM