r支持向量机e1071训练无法正常工作

时间:2013-07-25 10:31:24

标签: r svm training-data

我正在使用R语言中的支持向量机。具体来说,我使用的是e1071软件包。

只要我遵循手册页或wikibooks每个人的教程都可以使用。但是,如果我尝试将自己的数据集与这些示例一起使用,那么事情就不再那么好了。

似乎模型创建由于某种原因而失败。至少我没有得到目标列的水平。您可以在下面找到澄清的示例。

也许有人可以帮我弄清楚我在做错了什么。所以这里是所有的代码和数据。

测试数据集

target,col1,col2
0,1,2
0,2,3
0,3,4
0,4,5
0,5,6
0,1,2
0,2,3
0,3,4
0,4,5
0,5,6
0,1,2
0,2,3
0,3,4
0,4,5
1,6,7
1,7,8
1,8,9
1,9,0
1,0,10
1,6,7
1,7,8
1,8,9
1,9,0
1,0,10
1,6,7
1,7,8
1,8,9
1,9,0
1,0,10

R-脚本

library(e1071)

dataset <- read.csv("test.csv", header=TRUE, sep=',')

tuned <- tune.svm(target~., data = dataset, gamma = 10^(-6:-1), cost = 10^(-1:1))

summary(tuned)

model  <- svm(target~., data = dataset, kernel="radial", gamma=0.001, cost=10)

summary(model)

摘要(模型)声明的输出

+ summary(model)

Call:
svm(formula = target ~ ., data = dataset, kernel = "radial", gamma = 0.001, 
    cost = 10)

Parameters:
   SVM-Type:  eps-regression 
 SVM-Kernel:  radial 
       cost:  10 
      gamma:  0.001 
    epsilon:  0.1 

Number of Support Vectors:  28
>

Wikibooks examaple

如果我将此输出与wikibooks示例的输出进行比较,则会遗漏一些信息。请注意输出中的“Levels”部分:

library(MASS)
library(e1071)
data(cats)
model  <- svm(Sex~., data = cats)
summary(model)

输出

> summary(model)

Call:
svm(formula = Sex ~ ., data = cats)

Parameters:
   SVM-Type:  C-classification 
 SVM-Kernel:  radial 
       cost:  1 
      gamma:  0.5 

Number of Support Vectors:  84

 ( 39 45 )

Number of Classes:  2 

Levels: 
 F M

1 个答案:

答案 0 :(得分:2)

以适当的“回答”格式提出罗兰的回答:

target是数字

sex是一个因素

让我再提几点建议:

  • 好像target似乎应该是一个因素。 (它只有2个级别,0和1,我怀疑你正在尝试分类为0或1.)所以坚持在dataset$target <- factor(dataset$target)某处。
  • 现在,因为target是一个数字,正在运行回归模型而不是分类。
  • 在运行模型(尤其是模型)之前,对任何变量进行类似的检查是值得的。例如,在你给出的情况下,col1col2是什么并不明显。如果它们中的任何一个是分组或分类,您也应该将它们作为因子。
    • 在R中,许多函数有多种运行方式,具体取决于提供给它们的数据类型。如果将因子输入模型,它将运行分类。如果你喂数字,回归。这在许多编程语言中很常见,称为function overloading