使用 Accord.NET 我创建了一个 NaiveBayes 分类器。它将根据 6 组左右的图像处理结果对像素进行分类。我的图像是 5MP,因此 50 张图像的训练集会创建一个非常大的训练数据集。
每个像素 6 个 int 数组 * 500 万像素 * 50 张图像。
有没有办法逐步训练 NaiveBayes 分类器,而不是尝试将所有数据存储在内存中? 多次调用 Learn() 会每次覆盖旧数据,而不是添加到旧数据中。
目前无法使用 Accord.NET 增量训练朴素贝叶斯模型。
但是,由于朴素贝叶斯要做的就是尝试使某些分布适合您的数据,并且由于您的数据的维度非常少,因此也许您可以尝试在数据的子样本而不是所有数据上学习模型立刻。
当您加载图像来构建训练集时,您可以尝试随机丢弃每个图像中
x
% 的像素。您还可以绘制不同 x
值的分类器准确度,以找到模型的内存和准确度之间的最佳平衡(提示:对于如此小的模型和如此大量的训练数据,我预计它不会产生那么多即使您删除了 50% 的数据,也会有差异)。
抱歉回复太晚了。作为本科论文的一部分,我们开发了增量朴素贝叶斯学习器:https://github.com/Geekynawab/UNDERGRAD/blob/main/FYP_Phase1_Report%20(1).pdf