r - 绘制由插入符号训练的 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)
解决方案
情节在链接页面中有效但在您的情况下无效的原因有两个:
(1)在链接页面中,X
只有两个预测变量,因此可以在二维平面上可视化。在您的情况下,您有三个分类预测变量,如果您对它们进行虚拟化,会有更多的预测变量,我也在网上搜索过,但迄今为止我还没有找到任何解决方案kernlab::plot
来处理超过 2 个预测变量。
(2)在链接页面中,代码使用linear
内核,因此可以获得超平面的显式表达式,但在您的情况下,您正在使用radial
将预测变量映射到无限特征空间的内核,因此无法显式表达超平面在有限维图中。
推荐阅读
- javascript - 二十一点经销商机器人正在运行时,交易按钮不应该工作
- ios - 每次我重新点击文本字段时,视图都会发生变化
- javascript - “数字”类型的参数不可分配给“从不”类型的参数,为什么我会收到此错误?
- python - 如何为在 Tensorflow 2.x 中实现的 BERT 模型预处理数据集?
- javascript - 流式导入时 Snowpack 构建失败
- java - 事件循环应用程序(Netty、NodeJS)和多线程应用程序(.NET Core 3+、Tomcat)
- swift - AVCaptureVideoDataOutput 删除重复帧
- python - Exchangelib - 我如何知道帐户是否具有管理权限?
- javascript - 更改 webgl 供应商并使用 javascript 扩展进行渲染
- html - 发出 Ajax POST 请求时出现“parseerror”