我是R的新人,请帮助我理解错误。 我试图预测一些数据,但是预测函数返回的对象(它是奇怪的类(因子))包含低数据。测试装置尺寸为5886 obs。 160个变量,当预测对象长度为110时...我预期的预测类或数据帧的向量。我理解错了什么?
library(MASS)
library(e1071)
set.seed(333)
data <- read.csv(file="D:\\MaсhLearningAssign\\pml-training.csv", head=TRUE, sep=",")
index <- 1:nrow(data)
testindex <- sample(index, trunc(length(index)*30/100))
train <- data[-testindex, ]
test <- data[testindex, ]
model <- svm(classe~., data = train, kernel="radial", gamma=0.001, cost=10)
prediction <- predict(model, test)
summary(prediction)
Output:
A B C D E
28 24 25 12 22
答案 0 :(得分:3)
svm
没有处理缺失的观察结果,而且您的数据集中充满了NA:
> dim(data[complete.cases(data), ])
[1] 406 160
您可以尝试删除具有NA的列,然后训练svm
> data <- data[, which(colSums(apply(data, 2, is.na)) == 0)]
> dim(data)
[1] 19622 93
现在,您可以尝试拆分数据并使其适合svm
。我会小心的。它仍然是一个非常大的数据集,而svm
则相当耗费资源。
提示:我查看了您的数据,如果我认为是这样,请务必仔细阅读数据集说明。您有两种完全不同的行类型。它不仅应该解释NA的丰富程度,还应该给出对于测试集合有用的预测的想法。