我想实现一个OCR系统。我需要我的程序不要在它确实选择识别的字母上犯任何错误。它是否无法识别它们并不重要(即即使调用率低也具有高精度)。
有人可以帮我为此选择合适的ML算法。我一直在环顾四周,发现一些令人困惑的事情。例如,我发现有关SVM的矛盾陈述。在scikits learn docs中,有人提到我们无法获得SVM的概率估计。然而,我发现另一个post表示可以在WEKA中执行此操作。
无论如何,我正在寻找最适合此目的的机器学习算法。如果您也可以为算法建议一个库,那将会很棒。我更喜欢基于Python的解决方案,但我也可以使用Java。
答案 0 :(得分:1)
可以通过在构造probability=True
对象时设置SVC
来获取scikit中的SVM的概率估计。文档仅警告概率估计可能不是很好。
典型的概率分类器是logistic regression,所以你可以尝试一下。请注意,LR是一个线性模型,不像SVM可以通过使用内核来学习复杂的非线性决策边界。
答案 1 :(得分:0)
我看到人们使用neural networks效果很好,但这已经是几年前了。我问过一位专家同事,他说现在人们使用像nearest-neighbor分类器这样的东西。
我不知道scikit或WEKA,但任何半体面的分类包都应该至少实现k近邻。或者你可以自己实现它,这非常容易。尝试一下:它可能会比你想要的精度更低,但是你可以稍微修改一下,而不是采取简单的多数投票(即邻居中最常见的类别获胜),你需要在邻居之间达成更大的共识。分配一个类(例如,至少50%的邻居必须属于同一个类)。您需要的共识越大,您的精确度就越大,以回忆为代价。