R 将3个模型指标与ggplot2进行比较
当从3个训练模型到一个测试集指标绘制3个模型指标(RMSE、MAE、Rsquared)时,我试图证明神经网络模型是最好的R 将3个模型指标与ggplot2进行比较,r,ggplot2,cross-validation,R,Ggplot2,Cross Validation,当从3个训练模型到一个测试集指标绘制3个模型指标(RMSE、MAE、Rsquared)时,我试图证明神经网络模型是最好的 列车和测试指标之间的距离最小 它还具有足够低的RSME/MAE和较高的RSQUARE 现在,从所附的图上看,这并不明显。此外,由于Rsquared在[0,1]区间内,度量的尺度不同。有没有办法把它画得更好,最好是在同一个图上 可复制代码: trn最简单的方法是+facet\u wrap(~metric,scales=“free”),但我认为这不能满足“在一个图中”的要求(
- 列车和测试指标之间的距离最小
- 它还具有足够低的RSME/MAE和较高的RSQUARE
trn最简单的方法是+facet\u wrap(~metric,scales=“free”)
,但我认为这不能满足“在一个图中”的要求(它在一个图语句中,但在三个子图中)。如果gg1
是您的原始绘图,那么这是一种非常压缩的格式:
打印(gg1)
+镶嵌面包裹(~公制,scale=“free\u y”,ncol=1)
+主题_bw()
+主题(面板间距=网格::单位(0,“线”),
strip.background=element\u blank(),strip.text.x=element\u blank()
)
任何比这更压缩的内容都需要您做出一些关于丢弃哪些信息的决定(例如,您是否愿意将所有度量重新缩放为最小值=0、最大值=1,或者差异的大小是否传达了信息
保持条形标签不变可能会使图形更容易阅读(用户不必眯着眼睛看图例来确定哪个指标是哪个指标);您也可以尝试。太好了,我刚刚添加了axis.title=element\u blank()
。应该提到它将进入rmarkdown
文档,它在那里看起来很好,我刚刚测试了它的工作原理,如果您想同时清空x轴和y轴标签(比设置主题稍微干净),您可以使用+labs(x=”“,y=”“)
> trn
model RMSE Rsquared MAE dataType
1 Linear Reg 9.17 0.51 6.03 train
2 SVM Radial 7.86 0.64 4.86 train
3 Neural Networks 8.55 0.57 5.59 train
> tst
model RMSE Rsquared MAE dataType
1 Linear Reg 9.40 0.53 5.95 test
2 SVM Radial 9.16 0.55 5.50 test
3 Neural Networks 8.66 0.60 5.48 test
>
trn <- structure(list(model = c("Linear Reg", "SVM Radial", "Neural Networks"),
RMSE = c(9.17, 7.86, 8.55), Rsquared = c(0.51, 0.64, 0.57),
MAE = c(6.03, 4.86, 5.59)),
row.names = c(NA, -3L), class = "data.frame")
tst <- structure(list(model = c("Linear Reg", "SVM Radial", "Neural Networks"),
RMSE = c(9.4, 9.16, 8.66), Rsquared = c(0.53, 0.55, 0.6),
MAE = c(5.95, 5.5, 5.48)),
row.names = c(NA, -3L), class = "data.frame")
trn['dataType'] = 'train'
tst['dataType'] = 'test'
long_tbl <- rbind(trn, tst) %>%
pivot_longer(cols =!c('model', 'dataType'), names_to = 'metric', values_to='value')
ggplot(long_tbl, aes(x=model, y=value, shape = dataType, colour = metric )) +
geom_point()