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)) # 基础绘图
该代码生成的基础绘图符合预期:
美化绘图代码
# 美观绘图 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()
但此时网格预测的绘图出现了镜像反转,我无法确定原因,希望得到解决建议!
内容的提问来源于stack exchange,提问作者tomatofrommars
相关产品推荐
相关产品推荐

