【发布时间】:2023-03-19 17:38:01
【问题描述】:
我想实现一个 OCR 系统。我需要我的程序在它选择识别的字母上不犯任何错误。如果它不能识别其中的很多也没关系(即即使召回率低也可以实现高精度)。
有人可以帮我为此选择合适的机器学习算法吗?我一直在环顾四周,发现一些令人困惑的事情。例如,我发现关于 SVM 的说法自相矛盾。在scikits learn docs 中,提到我们无法获得 SVM 的概率估计。然而,我发现另一个 post 说可以在 WEKA 中执行此操作。
无论如何,我正在寻找最适合此目的的机器学习算法。如果您也可以为该算法推荐一个库,那就太好了。我更喜欢基于 Python 的解决方案,但我也可以使用 Java。
【问题讨论】:
-
scikit-learn 和 Weka 实际上都使用相同的底层 SVM 库
libsvm
。这不会得到 直接 概率估计(这是 scikit-learn 文档所说的),而是解决另一个学习问题并使用交叉验证来完成,这需要额外的时间。 this document 的第 8 节详细介绍了该算法。 -
@Dougal 那么,这些概率估计值是否可靠,或者我应该使用另一种机器学习技术来解决这类问题?
-
另外,我们如何使用交叉验证获得未知样本的概率估计?
-
不只是直接交叉验证;见我上面的链接。我的印象是它们是合理的,但并非完美无缺,虽然我没有详细研究过它们的行为,只是用过一两次。
标签: java python machine-learning weka scikit-learn