绘制由插入符号训练的 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,因此超平面无法在有限维图中明确表达。
我正在尝试获得与此 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,因此超平面无法在有限维图中明确表达。