使用Accord.NET我创建了一个NaiveBayes分类器。它将基于6组左右的图像处理结果对像素进行分类。我的图像是500万像素,因此50个图像的训练集创建了一组非常大的训练数据。
每个像素6个int数组* 500万像素* 50个图像。
有没有办法逐步训练NaiveBayes分类器,而不是试图将所有数据存储在内存中?每次调用Learn()会多次覆盖旧数据,而不是添加到旧数据中。
答案 0 :(得分:0)
目前无法使用Accord.NET逐步训练Naive Bayes模型。
然而,由于Naive Bayes所要做的就是尝试将一些分布拟合到您的数据中,并且由于您的数据维度很少,也许您可以尝试在数据的子样本上学习您的模型,而不是一下子全部。
当您加载图片以构建训练集时,您可以尝试随机丢弃每张图像中x
%的像素。您还可以为x
的不同值绘制分类器精度,以找到模型的内存和准确度之间的最佳平衡(提示:对于如此小的模型和大量的训练数据,我希望它不会使即使您丢弃了50%的数据,也会产生很大差异。)