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

R中SVM网格预测绘图镜像反转问题求助

SVM可视化镜像反转问题排查求助

我正在构建SVM模型,尝试绘制x轴为对数刻度的美观可视化图,但将预测结果映射到网格时,绘图出现了镜像反转的情况,无法定位原因,恳请大家帮忙排查问题。

SVM模型代码

# SVM 
dat <- select(data, Soft.or..Hybrid., Width..m., 
               Hi..cm., Kt, Submergence) # 筛选目标列
dat <- dat[complete.cases(dat),]
dat$Soft.or..Hybrid. <- as.factor(dat$Soft.or..Hybrid.) # 将Soft/Hybrid转为因子(SVM要求响应变量为数值型)
dat$Submergence <- as.factor(dat$Submergence)
n <- nrow(dat) # 观测数量
ntrain <- round(n*0.80) # 80%作为训练集
set.seed(314) 

tindex <- sample(n, ntrain) # 创建随机索引
train_data <- dat[tindex,] # 训练集
test_data <- dat[-tindex,] # 测试集

svm1 <- svm(Soft.or..Hybrid.~., data=train_data, 
            method="C-classification", kernel="radial",
            gamma=0.1, cost=100)

summary(svm1)

plot(svm1, train_data, Kt~Width..m.,log ="x", ylim = c(0, 1), xlim = c(0,1000)) # 基础绘图

该代码生成的基础绘图符合预期:
SVM基础绘图(符合预期)

美化绘图代码

# 美观绘图
col2 <- seq(log(min(dat$Width..m.)), log(1000), length.out = 50)
col3 <- seq(min(dat$Hi..cm.), max(dat$Hi..cm.), length.out = 2)
col4 <- seq(min(dat$Kt), max(dat$Kt), length.out = 50)

grid_log <- expand.grid(#Soft.or..Hybrid. = col1, 
                           Width..m. = exp(col2),
                           Hi..cm. = col3,
                           Kt = col4,
                           Submergence = dat$Submergence)

ygrid = predict(svm1, grid_log) # 将预测结果映射到网格

# 添加贝叶斯决策边界
func <- predict(svm1, grid_log, decision.values = TRUE)
func <- attributes(func)$decision

x_variable <- "Width..m."
y_variable <- "Kt"

# 绘图
ggplot(grid_log, aes(x = grid_log[, x_variable], y = grid_log[, y_variable], color = as.factor(ygrid))) +
  geom_point(size = 1, alpha = 0.2) +
  geom_point(data = dat, aes(x = Width..m., y = Kt, color = Soft.or..Hybrid.), shape = 8) +
  
  # 绘制level=0的等高线
  geom_contour(aes(z = as.numeric(func)), 
               breaks = 0, color = "black", linetype = "solid") +
  
  # 绘制level=0.5的等高线
  geom_contour(aes(z = as.numeric(func)), 
               breaks = 0.5, color = "black", linetype = "solid") +

  scale_color_manual(values = c("red", "blue", "green")) +  # 根据需要调整颜色映射
  ylim(0,1) +
  labs(title = "SVM Predictions",
       x = x_variable,
       y = y_variable) +
  scale_x_log10()

但此时网格预测的绘图出现了镜像反转,我无法确定原因,希望得到解决建议!
SVM ggplot镜像反转问题图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:14:56