2011-08-24 172 views
6

我们需要在Java中进行逻辑回归。我们在Python http://blog.smellthedata.com/2009/06/python-logistic-regression-with-l2.html中使用了这个代码,并且基本上需要Java中的相同内容。我被转至Weka,但许可证并非商业用途。Java中的逻辑回归

我发现Omegahat API有像Scipy这样的BFGS最小化器,但我无法弄清楚API:http://www.omegahat.org/api/org/omegahat/Numerics/Optimizers/OptimizerAlgorithmBFGS.html我想用模型实现一个类并放入似然函数。但model.eval需要一个ModelPointNumeric,它也有一个eval。无论如何,它与使用numpy的python代码的数学没有明确的相关性。 omegahat API是使用还是维护?我无法找到它的邮件列表。

回答

7

感谢您的意见。经过大量搜索后,我发现:http://mallet.cs.umass.edu/optimization.php这几乎是numpy实现工作方式的1:1翻译,它允许我们用数学公式自己做逻辑回归。所以我可以带上我们的python类并实现必要的4-5个方法,然后将其传递给BFGS求解器来执行逻辑回归。

它工作得很好,唯一我们必须意识到的是,马利特最大化功能和Numpy有一个最小化。

1

如果您还没有找到其他,请看看Apache Commons Math它是一个轻量级的自包含数学和统计组件库,它解决了Java编程语言或Commons Lang中不可用的最常见问题。

祝你好运。

1

有一个simple implementation for Java on GitHub,只有2类(加上一个工具)。它可能没有优化,但没有下载的依赖关系。

我创建了一个pull request,它进一步简化为单个文件。

+2

你好,我确实看了一下代码,优化器本身没有使用代价函数(lik),所以我想知道这里实际上正在优化什么。很明显,成本函数的梯度很容易计算,但权重更新没有正确更新,据我所知。 – 2016-07-09 10:44:06

+0

@WernerVanBelle我实际上并不知道如何计算Logistic回归,我只是将它分解成单个文件进行测试,但确实有一些事情没有做好。如果您发现问题,我很乐意纠正它们! – Matthieu