比如说,我正在使用朴素贝叶斯在 R 中开发机器学习模型。所以我将使用 naiveBayes 包构建一个模型,如下所示
model <- naiveBayes(Class ~ ., data = HouseVotes84)
Run Code Online (Sandbox Code Playgroud)
我还可以通过打印模型来打印模型的权重。
我按如下方式进行预测,这给了我一个作为预测的类
predict(model, HouseVotes84[1:10,], type = "raw")
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是,有没有办法查看哪些列对这个预测影响最大?因此,我可以了解导致学生不及格的最重要因素是什么,例如,如果这是响应变量,而各种可能的因素是其他预测变量列。
我的问题是对于 R 中的任何包,上面的 naiveBayes 只是一个例子。
答案取决于您想要如何进行功能选择。
如果它是模型构建过程的一部分,而不是一些事后分析,您可以使用caret其特征选择包装方法来确定最佳特征子集,以通过递归特征消除、遗传算法等进行建模,或使用单变量分析进行过滤。
如果它是仅基于您的预测的事后分析的一部分。那么这取决于你所使用的模型类型。caret也支持这个功能仅兼容型号才
对于svm,除了线性核之外,确定系数的重要性非常重要。我不知道有任何尝试尝试对svm一般情况进行某种功能排名,无论语言如何(请告诉我它是否存在!!)。
使用rpart(如问题中标记的那样),您可以直观地查看节点。节点越高越重要。这可以在包中完成caret:
library(rpart)
library(caret)
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
caret::varImp(fit)
# Overall
#Age 5.896114
#Number 3.411081
#Start 8.865279
Run Code Online (Sandbox Code Playgroud)
naiveBayes您可以从模型输出中看到它。你只需要认真凝视:
data(HouseVotes84, package = "mlbench")
model <- naiveBayes(Class ~ ., data = HouseVotes84)
model
#
#Naive Bayes Classifier for Discrete Predictors
#
#Call:
#naiveBayes.default(x = X, y = Y, laplace = laplace)
#
#A-priori probabilities:
#Y
# democrat republican
# 0.6137931 0.3862069
#
#Conditional probabilities:
# V1
#Y n y
# democrat 0.3953488 0.6046512
# republican 0.8121212 0.1878788
#
# V2
#Y n y
# democrat 0.4979079 0.5020921
# republican 0.4932432 0.5067568
Run Code Online (Sandbox Code Playgroud)
非常简短的一瞥表明,至少V1看起来是一个比 更好的变量V2。
| 归档时间: |
|
| 查看次数: |
2233 次 |
| 最近记录: |