R SVM预测

时间:2014-12-19 22:07:51

标签: r csv machine-learning classification prediction

我是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 

Dataset here

1 个答案:

答案 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的丰富程度,还应该给出对于测试集合有用的预测的想法。