You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言训练SVM模型准确率94%但无法绘制决策边界求助

问题排查与解决方案

核心问题

  • 你当前训练的SVM模型使用数据集中所有特征拟合,得到的是高维空间的分类超平面,无法直接在二维平面(仅展示两个特征的坐标系)中呈现
  • 现有代码中的绘图逻辑完全没有涉及决策边界绘制:plot(modfitsvm)是caret包输出的超参数调优结果图,fourfoldplot是混淆矩阵的可视化,都不会输出决策边界

实现双特征决策边界可视化的步骤

步骤1:使用目标双特征训练SVM模型

先选择你想要展示的两个特征(以乳腺癌数据集常用的radius_mean、texture_mean为例,可替换为你需要的特征),仅用这两个特征训练SVM:

# 构造仅包含目标特征和标签的训练子集,替换为你要使用的特征名
train_2d <- trainset[, c("diagnosis", "radius_mean", "texture_mean")]
# 用双特征训练线性SVM,cost参数沿用你调优得到的0.18
mod_2d <- svm(diagnosis~., data = train_2d, kernel = "linear", cost = 0.18)

步骤2:生成网格预测数据

在两个特征的取值区间内生成密集网格点,预测每个网格点的分类结果:

# 生成两个特征的取值序列
x_seq <- seq(min(train_2d$radius_mean), max(train_2d$radius_mean), length.out = 150)
y_seq <- seq(min(train_2d$texture_mean), max(train_2d$texture_mean), length.out = 150)
# 构造网格数据集
grid_df <- expand.grid(radius_mean = x_seq, texture_mean = y_seq)
# 预测网格点的分类
grid_df$pred <- predict(mod_2d, newdata = grid_df)

步骤3:绘制决策边界

基础绘图代码如下:

# 绘制样本点,按真实分类上色
plot(train_2d$radius_mean, train_2d$texture_mean, 
     col = as.factor(train_2d$diagnosis), pch = 16,
     xlab = "半径均值", ylab = "纹理均值")
# 叠加决策边界
contour(x_seq, y_seq, matrix(as.numeric(grid_df$pred), length(x_seq), length(y_seq)),
        levels = 1.5, add = T, drawlabels = F, lwd = 2, col = "black")

补充说明

如果需要基于全特征训练的模型绘制二维决策边界,需要先通过PCA等降维方法将所有特征投影到二维空间,再基于降维后的特征绘制边界,操作复杂度更高,新手建议先从双特征模型入手理解决策边界逻辑。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:24:06