gpt4 book ai didi

r - 为 R 中的朴素贝叶斯分类选择特征

转载 作者:行者123 更新时间:2023-12-01 03:49:12 24 4
gpt4 key购买 nike

我想使用朴素贝叶斯分类器进行一些预测。
到目前为止,我可以使用 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], ...)

但这不记得哪些变量在同一因子中配对,因此并不理想。

关于r - 为 R 中的朴素贝叶斯分类选择特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24391423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com