我正在玩 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 示例的输出进行比较,它会丢失一些信息。请注意输出中的“级别”部分:
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