提升minist的准确率并探索分类指标Precision,Recall,F1-Score和Accuracy

1 问题

探索提升mnist数据集的准确率。

探索precision, recall, f1-score的实现方法。

探索提升accuracy的方法。

2 方法

问题1

  1. 优化神经网络架构:一个常见的MNIST识别模型是LeNet-5,它是一个简单的神经网络架构。虽然LeNet-5的准确率已经相当高(约98%),但你可以尝试优化其架构以进一步提升准确率。例如,可以尝试添加更多的隐藏层,或者调整隐藏层节点的数量,以更好地适应数据。

  2. 采用更先进的模型:除了优化LeNet-5模型之外,你还可以考虑使用更先进的模型,如ResNet、VGGNet或DenseNet等。这些模型在许多图像分类任务中都表现优异,并可能进一步提高MNIST数据集的准确率。

  3. 数据增强:数据增强是一种通过应用各种随机变换来增加数据集大小的技术。例如,你可以旋转、平移、缩放或翻转图像,以生成新的训练样本。这可以帮助模型更好地泛化,从而减少测试误差。

  4. 早期停止:这是一个防止过拟合的策略,可以帮助模型在训练过程中更好地泛化。你可以在训练过程中监视模型的验证误差,当验证误差开始增加时,停止训练并使用最佳模型进行测试。

  5. 集成学习:集成学习是一种通过结合多个模型来提高预测精度的技术。例如,你可以训练几个不同的神经网络模型,并将它们的预测结果结合起来(例如,通过投票或平均)。这通常可以提高模型的准确性和鲁棒性。

优化神经网络架构

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| class MyNet(nn.Module): def init(self): super().init() self.fc1 = nn.Linear(in_features=784, out_features=1024) self.fc2 = nn.Linear(in_features=1024, out_features=512) self.fc3 = nn.Linear(in_features=512, out_features=256) self.fc4 = nn.Linear(in_features=256, out_features=128) self.fc5 = nn.Linear(in_features=128, out_features=64) self.fc6 = nn.Linear(in_features=64, out_features=10) def forward(self, x): x = torch.flatten(x, start_dim=1) x = self.fc1(x) x = self.fc2(x) x = self.fc3(x) x = self.fc4(x) x = self.fc5(x) out = self.fc6(x) return out net = MyNet() |

问题2

3.Precision,Recall,F1-Score主要解决数据集中不平衡的问题,偏斜类数据:正负样本比例差距巨大时,为偏斜类数据,尤其是在医疗应用领域。

Precision:查准率,在模型预测为positive(正)的样本中其中的正样本(真实的正样本)所占的比例,针对判定结果而言,预测为正类的样本(TP+FP)中真正是正实例(TP)所占的比率。在类别的数量不均衡的情况下,查准率是评估模型性能的一个很有用的标准。

Recall:查全率,针对样本而言,被正确判定的正实例(TP)在总的正实例中(TP+FN)所占的比率。同查准率一样,查全率在类别的数量不均衡的情况下,也是评估模型性能的一个很有用的标准。

F1-Score:是精度(Precision)和召回率(Recall)的加权调和平均,F1-Score值越接近1,则模型在查全率与查准率两方面的综合表现越好。而Precision或Recall中,一旦有一项非常拉跨(接近于0),F值就会很低。

问题3

试举例计算模型的准确率,假设某模型将100个分为恶性(正类别)或良性

准确率(Accuracy)计算公式为:

准确率,就是在全部预测中,正确预测结果占的比例。

100个样本中,91个为良性,其中,1个FP(假正例)& 90个TN(真负例),9个为恶性,其中,1个TP(真正例)&8个FN(假负例)。

整个样本中有91个良性,该模型将90个样本正确识别为良性,将1个样本识别为恶性,这个效果很好。但是,在9个恶性样本中,将8个样本识别为良性,9个恶性有8个未被诊断出来,8/9,这个结果多么可怕!!!

91%的准确率,看起来还不错,如果另一个分类器模型总是预测良性,那么这个模型使用我们的样本进行预测,也会得出相同的准确率。

换句话说,该模型与那些没有预测恶性和良性的模型差不多。

还有,当我们使用分类不平衡的数据集(如:正类别标签与负类别标签数量存在明显差异)时,就一项准确率并不能反映情况。

3 结语

针对mnist数据集的准确率提升问题,本文提出了一些方法,如优化神经网络架构、采用更先进的模型、数据增强、早期停止等。也探索了precision, recall, f1-score的方法,并列出了公式。然后通过举例来计算该模型的准确率(Accuracy),可以看出该模型与那些没有预测恶性和良性的模型差不多。

相关推荐
渡之2 小时前
ArduPilot (APM)滤波器之SlewLimiter 深度解析
算法
豆豆2 小时前
AI 建站实战:AI 生成前端页面如何集成自有 CMS 系统
人工智能·cms·网站搭建·网站管理系统·ai建站·建站工具·中小企业建站
cjy0001112 小时前
2026年9月零基础能听懂国内 FDE 讲师的课吗?
大数据·前端·人工智能·fde
zander2583 小时前
LeetCode 1143. 最长公共子序列
开发语言·python·算法
Sumerking3 小时前
llc_control.c 专项评审(v3 更新版)
c语言·开发语言·算法·obc
百胜软件@百胜软件3 小时前
百胜软件SenClaw胜券助手正式发布:AI让数据“开口说话”,随时赋能零售运营
大数据·人工智能·零售
程序员天天困3 小时前
Claude Fable 5.1 到底怎么样?扒完官方跑分和第三方榜单,说几句实话
人工智能·claude
喜欢睡觉3 小时前
LangChain 输出解析器:从裸文本到结构化输出
人工智能
工业涂料百问3 小时前
【市场格局】系列(四)汽车、船舶、风电涂料赛道对比:1400亿工业涂料里,哪个细分最“肥“?
人工智能·汽车
桃西西呀3 小时前
红酒标签上的 87 分是怎么算出来的?我拿 1599 瓶真酒把线性回归和逻辑回归拆开讲
人工智能·机器学习·llm