R语言随机森林手写数字分类colMeans结果绘图实现咨询
colMeans结果的绘图实现
完全可以为这部分分类错误率结果绘制可视化图表,操作不需要复杂的数据处理,对初学者非常友好。
前置数据整理
你现有代码最后输出的colMeans结果,是每个数字类别(0-9)对应的平均袋外分类错误率,本身已经带有和数字标签对应的列名——这部分列名是randomForest模型自动生成的,和你读入MNIST数据集时有没有设置列名没有关系,不需要额外补列名就能直接用来绘图。
把下面的代码接在你现有代码的末尾即可:
# 整理绘图用的结构化数据 class_err <- err_df %>% select(-"OOB") %>% colMeans() %>% data.frame( digit = names(.), error_rate = as.numeric(.) ) # 固定横轴数字顺序为0到9,避免画图时标签乱序 class_err$digit <- factor(class_err$digit, levels = as.character(0:9))
可选绘图方式
零依赖基础绘图
不需要额外安装新包,直接调用R内置函数即可生成基础柱状图:
barplot( height = class_err$error_rate, names.arg = class_err$digit, xlab = "手写数字类别", ylab = "平均分类错误率", main = "不同数字类别的随机森林分类错误率", col = "#4A90E2", border = NA )
美观风格绘图
如果需要更整洁的可视化效果,可以调用ggplot2包绘制(首次使用前运行install.packages("ggplot2")完成安装即可):
library(ggplot2) ggplot(class_err, aes(x = digit, y = error_rate, fill = digit)) + geom_col(width = 0.7, show.legend = FALSE) + labs( x = "手写数字类别", y = "平均分类错误率", title = "不同数字类别的随机森林分类错误率" ) + theme_minimal()
关于MNIST数据集无列名的说明
你目前的读入逻辑完全可以正常运行,不需要手动给784个像素列补充有意义的列名:
- 使用
col_names = FALSE读入的CSV文件,会自动给所有列分配X1到X785的默认列名,其中第一列X1就是数字标签,后续784列是像素灰度值。 - 随机森林训练只需要正确匹配输入特征和对应标签,不要求特征列有业务含义的命名,不会影响模型训练、错误率计算和后续绘图的结果。
内容的提问来源于stack exchange,提问作者Hansika Sachdeva
相关产品推荐
相关产品推荐

