首页 > 解决方案 > 绘制由插入符号训练的 SVM

问题描述

我试图得到一个类似于在这篇文章中获得的图 Plot SVM 线性模型由 R 中的 caret 包训练

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

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)

标签: rplotsvmr-caret

解决方案


情节在链接页面中有效但在您的情况下无效的原因有两个:

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

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


推荐阅读