2009-07-17 78 views
11

我在R中有支持向量机,现在我想绘制该机器的分类空间。我在互联网上找到了一些例子,但我似乎无法理解它们。如何在R中绘制支持向量机的分类图

我的[R脚本如下:

library(e1071) 
day_of_week <- c(0,1,2,3,4,5,6) 
holiday <- factor(c(T, F, F, F, F, F, T)) 
model <- svm(day_of_week, holiday) 
plot(model, day_of_week, holiday) 

我不能让绘图命令工作。我想要一个像这样的图表http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/images/plot.svm_001.png

回答

18

首先,plot.svm函数假定数据在两个维度上变化。您在示例中使用的数据仅为一维,因此决策边界必须绘制在一条不支持的线上。其次,函数似乎需要一个数据帧作为输入,并且您正在处理矢量。

这应该工作...

library(e1071) 

day = c(0,1,2,3,4,5,6) 
weather = c(1,0,0,0,0,0,0) 
happy = factor(c(T,F,F,F,F,F,F)) 

d = data.frame(day=day, weather=weather, happy=happy) 
model = svm(happy ~ day + weather, data = d) 
plot(model, d) 
+0

谢谢,看来我需要熟悉〜运营商,其涉及式。我曾假设给定一个svm对象,它将能够在没有更多方向的情况下呈现分类空间。 – 2009-07-17 13:50:18

13

或者,你可以使用kernlab包:

library(kernlab) 

model.ksvm = ksvm(happy ~ day + weather, data = d, type="C-svc") 
plot(model.ksvm, data=d)