我正在玩R语言的支持向量机。具体来说,我使用的是e1071包。
只要我遵循维基百科的手册页或教程,一切都能工作。但是如果我尝试在这些例子中使用我自己的数据集,事情就不再那么好了。
似乎模型创建由于某种原因而失败了。至少我没有得到目标列上的级别。下面是需要澄清的例子。
也许有人能帮我找出我在这里做错了什么。这是所有的代码和数据。
测试数据集
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,10R-脚本
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示例的输出进行比较,它将丢失一些信息。请注意输出中的“级别”-Section:
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发布于 2013-07-25 20:47:06
把罗兰的答案按正确的“答案”格式写成:
target是数字的
sex是一个因素
让我再提几点建议:
target确实应该是一个因素。(它只有两个级别,0& 1,我怀疑你试图将其分类为0或1。)所以,把dataset$target <- factor(dataset$target)放在某个地方。target是一个数字,所以正在运行一个回归模型,而不是一个分类。col1和col2是什么并不明显。如果它们中的任何一种是分组或分类,您也应该使它们成为因素。
https://stackoverflow.com/questions/17855531
复制相似问题