我尝试使用 e1071 包中经过训练的 SVM 进行预测,但我的数据包含一些缺失值 (NA)。
当该实例有任何缺失值时,我希望返回的预测为 NA。我尝试使用 na.action = na.pass 如下,但它给了我一个错误“名称错误(ret2)
如果我使用 na.omit 那么我可以获得预测而无需丢失数据的实例。
如何获得包括 NA 在内的预测?
library(e1071)
model <- svm(Species ~ ., data = iris)
print(length(predict(model, iris)))
tmp <- iris
tmp[1, "Sepal.Length"] <- NA
print(length(predict(model, tmp, na.action = na.pass)))
如果您熟悉插入符包 http://topepo.github.io/caret/index.html,您可以在其中使用 233 种不同类型的模型进行拟合(包括来自包 e1071 的 SVM),在称为“按标签相似度聚类的模型” http://topepo.github.io/caret/models-clustered-by-tag-similarity.html在那里你可以找到一个 csv 文件,其中包含他们用于对算法进行分组的数据。
那里有一个专栏叫做处理丢失的预测数据,它告诉您哪些算法可以做您想要的事情。不幸的是 SVM 不包括在内,但这些算法是:
- 增强分类树 (ada)
- 袋装 AdaBoost (AdaBag)
- AdaBoost.M1 (AdaBoost.M1)
- C5.0 (C5.0)
- 成本敏感型C5.0 (C5.0Cost)
- 单个 C5.0 规则集 (C5.0Rules)
- 单个 C5.0 树 (C5.0Tree)
- CART(r部分)
- 购物车 (rpart1SE)
- 购物车 (rpart2)
- 成本敏感型 CART (rpartCost)
- CART 或序数响应 (rpartScore)
如果你仍然坚持使用 SVM,你可以使用 knnImpute 选项预处理函数 http://topepo.github.io/caret/pre-processing.html#imputation来自同一个包,这应该允许您预测所有观察结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)