大规模机器学习——Python 还是 Java? [关闭]

Posted

技术标签:

【中文标题】大规模机器学习——Python 还是 Java? [关闭]【英文标题】:Large scale machine learning - Python or Java? [closed] 【发布时间】:2012-04-01 00:42:47 【问题描述】:

我目前正在着手一个项目,该项目将涉及爬取和处理大量数据(数百个 gig),并挖掘它们以提取结构化数据、命名实体识别、重复数据删除、分类等。

我熟悉 Java 和 Python 世界的 ML 工具:Lingpipe、Mahout、NLTK 等。但是,当涉及到为如此大规模的问题选择平台时 - 我缺乏足够的经验来决定Java 或 Python。

我知道这听起来像是一个模糊的问题,但我正在寻找有关选择 Java 或 Python 的一般建议。 JVM 提供了比 Python 更好的性能(?),但是 Lingpipe 等库是否与 Python 生态系统相匹配?如果我使用这个 Python,那么在多台机器上扩展和管理它会有多容易?

我应该选择哪一个?为什么?

【问题讨论】:

Jython :-) 在大规模机器学习任务中使用的算法与语言一样重要(或更多);例如,在处理大量数据时,基于特征向量的技术可能不可行。因此,虽然值得考虑每种语言针对大规模问题的可用工具,但使用的 ML 算法可能会主导性能。 你的问题很有趣,但也很广泛,我什至不知道我能回答什么。一个建议是使用 Mahout(来自 Hadoop 的项目)直接解决您的问题。尽量让你的问题更加明确和详细,否则即使它有潜力,它也可能会被关闭。 【参考方案1】:

我认为 Java 的一件大事就是 Hadoop。如果您真的是指大规模,您将希望能够使用类似的东西。一般来说,Java 具有性能优势,并且可用的库更多。所以:Java。

【讨论】:

【参考方案2】:

随着 Apache 不断发展壮大,生产出优秀的产品,例如用于搜索的 Lucene/Solr/Nutch、用于大数据机器学习的 Mahout、用于 Map Reduce 的 Hadoop、用于 NLP 的 OpenNLP,以及许多 NoSQL 的东西。最好的部分是代表集成的大“I”,这些产品可以相互集成,当然在大多数情况下它们(这些产品)是相互补充的。

Python 也很棒,但是如果您从 ASF 考虑以上内容,那么我会像 Sean Owen 一样使用 Java。 Python 将始终可用于上述内容,但主要类似于 Add on,而不是实际的东西。例如,您可以通过使用 Streaming 等使用 Python 进行 Hadoop。

为了利用一些非常流行的 Apache 产品,如 Lucene、Solr 和 OpenNLP,以及其他流行的开源 NoSQL Java 产品,如 Neo4j 和 OrientDB,我部分地从 C++ 切换到了 Java。

【讨论】:

【参考方案3】:

如果您正在寻找适合 ML 任务的 NoSQL 数据库,那么 Neo4J 是更适合生产(相对)并且能够处理 BigData 的数据库之一,它是 JAVA 原生的,但带有开箱即用的漂亮 REST API因此可以与您选择的平台集成。 JAVA 将在这里为您提供性能优势。

【讨论】:

以上是关于大规模机器学习——Python 还是 Java? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python机器学习中文版

Python机器学习中文版

智能算法CoCoA:大规模机器学习的分布式优化通用框架

揭秘机器学习的规模化 - Twitter的机器学习框架

收藏 | 机器学习数据集汇总收集

收藏 | 机器学习数据集汇总收集