R SVM预测

我在R语言方面是新手,请帮助我理解哪里出了问题。我试图预测一些数据,但predict函数返回的对象(这是一个奇怪的类(因子))包含的数据很少。测试集大小为5886个观测值,160个变量,而predict对象的长度是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 

数据集在这里


回答:

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值的丰富性,还能提供一个有助于预测的想法,考虑到你的测试集。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注