绘制由插入符号训练的 SVM

Plot SVM trained by caret

我正在尝试获得与此 post

中获得的相似的情节

如果我在我的控制台上 运行 此代码有效,但如果我用我的数据执行此代码,它就不起作用,所以我想知道这是否是我的数据的问题。这是对我不起作用的示例:

library(wakefield)
X <- r_sample_factor(c("low", "high"), n=232)
MAMAMA<-r_sample_factor(c("C/C", "C/G", "G/G"), n=232)
MEMEME<-r_sample_factor(c("C/C", "C/T", "T/T"), n=232)
MIMIMI<-r_sample_factor(c("A/A", "A/T", "T/T"), n=232)

datos<-data.frame(X,MAMAMA,MEMEME, MIMIMI)

sv<-caret::train(X~., datos, method="svmRadial", trControl= trainControl(method='cv', number=5))

kernlab::plot(sv$finalModel)

该图在 link 页面有效但在您的情况下无效的原因有两个:

(1) 在 link 页面中, X 只有两个预测变量,因此可以在二维平面上可视化。在你的情况下,你有三个分类预测变量,如果你将它们虚拟化,会有更多的预测变量,我也在网上搜索过,但到目前为止,我还没有找到 kernlab::plot 的任何解决方案来处理超过 2 个预测变量。

(2) 在 link 页面中,代码使用 linear 内核,因此可以获得超平面的显式表达式,但在您的情况下,您正在使用 radial 内核,它将预测变量映射到无限特征 space,因此超平面无法在有限维图中明确表达。