我正在使用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
答案 0 :(得分:2)
以适当的“回答”格式提出罗兰的回答:
target
是数字
sex
是一个因素
让我再提几点建议:
target
似乎应该是一个因素。 (它只有2个级别,0和1,我怀疑你正在尝试分类为0或1.)所以坚持在dataset$target <- factor(dataset$target)
某处。target
是一个数字,正在运行回归模型而不是分类。col1
和col2
是什么并不明显。如果它们中的任何一个是分组或分类,您也应该将它们作为因子。