如何在 R 中使 naiveBayes() 的公式参数通用?
Posted
技术标签:
【中文标题】如何在 R 中使 naiveBayes() 的公式参数通用?【英文标题】:How to make generic the formula parameter of naiveBayes() in R? 【发布时间】:2019-10-23 04:45:27 【问题描述】:当我使用库"e1071"
的函数naiveBayes()
时,需要插入以下类型的公式:
myFormula <- myClass~ feature1 + feature2 + feature3
如果我想让它通用(我不知道相关数据集有多少特征)我该怎么办?我只知道myClass
列将是最后一列,我想考虑所有其他列
【问题讨论】:
【参考方案1】:您可以使用.
动态引用所有其他列。
myFormula <- cyl ~ .
naiveBayes(myFormula, data = mtcars)
Call:
naiveBayes.default(x = X, y = Y, laplace = laplace)
A-priori probabilities:
Y
4 6 8
0.34375 0.21875 0.43750
Conditional probabilities:
mpg
Y [,1] [,2]
4 26.66364 4.509828
6 19.74286 1.453567
8 15.10000 2.560048
disp
Y [,1] [,2]
4 105.1364 26.87159
6 183.3143 41.56246
8 353.1000 67.77132
如果您想要动态类,您可以使用substitute
公式并在naiveBayes
函数调用中使用eval
对其进行评估。
dynamicNB <- function(data, class)
myFormula <- substitute(class ~ .)
naiveBayes(eval(myFormula), data = data)
dynamicNB(class = mpg, data = mtcars)
【讨论】:
运行这个:naiveBayes(myFormula, data = df)
我得到Error in model.frame.default(formula = myFormula, data = df, na.action = function (object, : variable lengths differ (found for 'Class')
。也许使用点还包括最后一列(带有“类属性”?)我不明白
我也知道它可能看起来很混乱,但Class
是第一个属性,而Survived
是“类属性”(我也在使用泰坦尼克号数据集)
用 mtcars 数据集尝试过,也用第二列。您可以使用dput
提供您的数据吗?
我明白了,我想我得到了你想要的:)
关于我的问题的要点是获得~.
。目前我只能对第一类使用几个 if-else 语句,因此我将您的答案标记为正确的:再次感谢!以上是关于如何在 R 中使 naiveBayes() 的公式参数通用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Excel下拉中使字母自动递增 急急急急急!!!!!!!!!