【发布时间】:2016-06-19 19:15:58
【问题描述】:
我正在关注 Tibshirani 的 ISL 文本。我正在尝试在 ggplot2 中绘制 SVM 的结果。我可以获得点和支持向量,但我不知道如何获得为 2D 案例绘制的边距和超平面。我用谷歌搜索并检查了 e1071 自述文件。一个通用的、动态的解决方案(适用于各种 SVM 内核、成本等)会很棒。这是我的 MWE:
set.seed(1)
N=20
x=matrix(rnorm(n=N*2), ncol=2)
y=c(rep(-1,N/2), rep(1,N/2))
x[y==1,] = x[y==1,] + 1;x[y==1,]
dat = data.frame(x=x, y=as.factor(y))
library(e1071)
library(ggplot2)
svmfit=svm(y~., data=dat, kernel="linear", cost=10, scale=FALSE)
df = dat; df
df = cbind(df, sv=rep(0,nrow(df)))
df[svmfit$index,]$sv = 1
ggplot(data=df,aes(x=x.1,y=x.2,group=y,color=y)) +
geom_point(aes(shape=factor(sv)))
【问题讨论】:
-
在
e1071中已经为svm定义了一个基本的图形绘制方法。你看plot(svmfit, dat)的结果了吗?你想在 ggplot 中复制它吗? -
是的,我正在尝试在 ggplot 中复制它,并为超平面添加线,为 2D 案例 (K=2) 的边距添加虚线。
-
您可能想接受@user21359 的回答,因为它就像一个魅力