十大 Java 机器学习工具和库
对于Java机器学习的关注反映了Java语言的普及。由于其极端的稳定,领先的组织和企业已经采用Java几十年。它广泛应用于Android的移动应用开发,为全球数十亿用户提供服务。
为了实现机器学习算法,Java开发人员可以使用各种工具和库。仅在上就列出了至少90个基于Java的ML项目。本文列出了10个最常用的库和平台:简要地描述了它们可以解决的问题类型以及它们支持的算法。
按照字母顺序排序:
1.ApacheSpark’sMLib
ApacheSpark是一个构建在Hadoop之上的大规模数据处理平台。Spark的模块MLlib是一个可扩展的机器学习库。MLib用Scala编写,可用于Java、Python、R和Scala。MLlib可以轻松插入Hadoop工作流并使用基于Hadoop的数据源和本地文件。支持的算法包括分类、回归、协同过滤、聚类、降维和优化。
2.DeepLearningforJava
Deeplearning4j或DL4J是我们的最爱。它是第一个用Java编写的商业级开源分布式深度学习库。DL4J与其他JVM语言兼容,例如Scala、Clojure或Kotlin。它与Hadoop和Spark集成,旨在成为程序员的DIY工具。
DL4J的使命是将深度神经网络和深度强化学习结合起来用于商业环境而不是研究。DL4J为神经网络创建提供API并支持各种神经网络结构:前馈神经网络、RBM、卷积神经网络、深度信念网络、自动编码器等。深度神经网络和深度强化学习能够进行模式识别和面向目标的机器学习。因此,DL4J可用于识别语音、声音和文本中的模式和情绪,检测时间序列数据中的异常,例如金融交易,以及识别人脸/声音、垃圾邮件或电子商务欺诈。
3.ELKI
ELKI代表开发由索引结构支持的KDD应用程序的环境。开源数据挖掘软件是用Java编写的。它是为研究人员设计的,经常被希望创建合理数据库的研究生使用。
ELKI旨在提供多种高度可配置的算法参数。数据挖掘算法和数据管理任务的分离以独立评估两者在数据挖掘框架中是独一无二的。为了实现高性能和可扩展性,ELKI提供了R*-tree和其他可以显着提高性能的数据索引结构。ELKI对任意数据类型、文件格式或距离或相似性度量开放。
4.Java-ML
Java-ML(Java机器学习库)是面向软件工程师、程序员和科学家的开源Java框架/JavaAPI。大量机器学习和数据挖掘算法包含用于数据预处理、特征选择、分类和聚类的算法。与其他聚类算法相比,它很简单,可以轻松实现任何新算法。没有GUI,但相同类型的算法有一个清晰的通用界面。
Java-ML支持任何类型的文件,只要它每行包含一个数据样本,并且用逗号、分号或制表符分隔这些特征。Java-ML有详细记录的源代码和大量的代码示例和教程。
5.JSAT
JSAT代表Java统计分析工具。它拥有最大的机器学习算法集合之一。JSAT是纯Java并且没有外部依赖。library的一部分用于self-education,因此所有代码都是自包含的。其中大部分支持并行执行。该库对于中小型问题的速度相当快。
6.Mahout
ApacheMahout是一个分布式线性代数框架和具有数学表达能力的ScalaDSL。该软件是用Java和Scala编写的,适用于数学家、统计学家、数据科学家和分析专业人员。内置机器学习算法有助于更轻松、更快速地实施新算法。
Mahout建立在可扩展的分布式架构之上。它使用MapReduce方法,通过使用服务器集群的并行分布式算法来处理和生成数据集。Mahout具有控制台界面和JavaAPI,可扩展算法用于聚类、分类和协同过滤。ApacheSpark是推荐的开箱即用分布式后端,但Mahout支持多个分布式后端。
Mahout是业务就绪的,可用于解决三种类型的问题:
1. 物品推荐,例如在推荐系统中;
2. 聚类,例如,将主题相关的文档分组;
3. 分类,例如,学习将哪个主题分配给未标记的文档。
7.MALLET
MachineLearningforLanguageToolkit是一个广泛的自然语言处理算法和实用程序的开源库。它具有命令行界面。有用于朴素贝叶斯、决策树、最大熵和隐马尔可夫模型、潜在狄利克雷主题模型、条件随机场等的JavaAPI。
这个基于Java的包支持统计NLP、文档分类、聚类、聚类分析、信息提取、主题建模和其他ML应用程序到文本。MALLET用于文档分类的复杂工具包括将文本转换为“特征”的高效例程。序列标记工具有助于从文本中提取命名实体。GRMM是MALLET的附加包,包含对通用图形模型推理的支持,以及对具有任意图形结构的CRF的训练。
8.MOA
MassiveOnlineAnalysis是最流行的数据流挖掘开源框架。MOA专门用于实时数据流的机器学习和数据挖掘。它的Java机器学习算法和评估工具可用于分类、回归、聚类、异常值检测、概念漂移检测和推荐系统。该框架可用于不断发展的大型数据集和数据流,以及物联网设备生成的数据。
MOA为在数据挖掘领域运行实验提供了一个基准框架。其有用的功能包括:
用于新挖掘算法、新流生成器和评估措施的可扩展框架;
用于可重复实验的数据流的可存储设置;
一组来自文献的现有算法和度量以进行比较。
9.RapidMiner
商业数据科学平台是为分析团队构建的。它目前为Cisco、GE、Hitachi、SalesForce、三星、西门子和其他巨头提供支持。它带有一组功能和工具,用于简化数据科学家执行的任务、构建新的数据挖掘流程、设置预测分析等。构建易于理解且直接的机器学习工作流程变得容易。自动化机器学习加速并简化了数据科学项目。再加上一个庞大的社区和大量的文档。
RapidMiner贯穿整个数据科学生命周期,从数据准备到预测模型部署。数据科学平台通过GUI和JavaAPI包含许多用于开发自己的应用程序的ML库和算法。数据科学家可以利用GUI来利用特征选择、数据加载和清理、创建可视化工作流、简化模型部署和管理、实施无代码数据科学等。
10.Weka
最后但并非最不重要的一点是,开源Weka可以说是最著名和最受欢迎的Java机器学习库。通用库具有丰富的图形用户界面、命令行界面和JavaAPI。它免费、便携且易于使用。
Weka用于数据挖掘任务的机器学习算法可以通过提供的GUI直接应用于数据集,或者通过提供的API从您的Java代码中调用。有用于数据准备、分类、回归、聚类、关联规则挖掘、时间序列预测、特征选择、异常检测和可视化的工具。Weka具有用于设置长时间运行的挖掘运行、试验和比较各种算法的高级功能。它允许您在文本文件上运行学习算法。
Weka的主要用途是数据挖掘、数据分析和预测建模。需要自动分类数据的应用程序是主要受益者。它也非常适合开发新的ML方案。
总结
本文列出了十种流行的JavaAI框架,其中大部分是开源的。框架的选择主要取决于对算法的支持和神经网络的实现。速度、数据集大小和易用性是经常影响决策的其他因素。选择Java机器学习库时,最重要的是了解您的项目需求和您打算解决的问题。
例如,MALLET支持统计自然语言处理,可用于分析大量文本集合。RapidMiner通过机器学习算法提供数据处理、可视化和建模。超过450,000名专业人士使用其产品来增加收入、降低成本和规避风险。
JSAT可以说是最快的Java机器学习库之一。它提供了高性能、灵活性和快速开始处理ML问题的机会。在处理大规模数据时,ApacheSpark的MLib也以功能强大且速度快而著称。Deeplearning4j被认为是最好的之一,因为它利用最新的分布式计算框架来加速训练。Mahout提供高性能、灵活性和可扩展性。
Weka可能是目前最好的Java机器学习库。用于数据分析和预测建模的大量算法和工具已经实现了大多数ML算法。与Weka项目相关,MOA实时进行大数据流挖掘和大规模ML。MOA旨在实现时间和内存效率高的处理。与Weka相比,Java-ML提供了更一致的接口。它拥有大量最先进的相似性度量和特征选择技术。存在其他包中不存在的新颖算法的实现。Java-ML还具有多个Weka桥接器,可以通过Java-MLAPI直接访问Weka的算法。
尽管并非详尽无遗,但Java机器学习库列表有望在您即将设计、构建和部署ML应用程序时有用。如果您需要专业帮助,请联系我们!
其他Java机器学习库
1.ADAMS
ADAMS代表高级数据挖掘和机器学习系统。它为构建和维护数据驱动的、可轻松集成的反应式工作流提供了灵活性。
它提供了广泛的操作符,也称为参与者,可以执行信息检索、处理、数据挖掘和可视化。Actor能够在树结构中隐式连接,而不是放置在画布上。ADAMS是在GPLv3许可下发布的。
2.Neuroph
Neuroph是一种用Java编写的面向对象的人工神经网络(ANN)。在Java的帮助下,人们可以轻松地创建和训练多个神经网络。此外,可以使用GUI工具——easyNeurons创建神经网络。
Neuroph2.96的最新版本包含多项API改进、功能以及可用于标准机器学习任务的示例。
3.StanfordCoreNLP
StanfordCoreNLP是斯坦福大学提供的一套人类语言技术工具。这是一个基于Java的注释框架pipeline,通过它可以执行各种NLP相关任务。它是最常用的NLP管道之一,可以提供单词的基本形式、标记化、词性、识别文本和句法依赖性分析。
StanfordCoreNLP工具包的一些功能如下:
它提供了一个集成的 NLP 工具包,其中包含广泛的语法分析工具。
它为流水线生产提供了快速高效的文本注释器。
Stanford CoreNLP 是一个现代包,维护良好并定期更新,提供最高阶的文本分析。
另一个重要功能是它支持多种人类语言,如阿拉伯语、中文、英语等。
除了 Java 作为主要工具之外,Stanford CoreNLP 还为世界上大多数主要的编程语言提供 API。
它也可以用作简单的网络服务。
借助斯坦福大学的 CoreNLP 软件,人们可以轻松地将语言分析工具应用于文本信息。只需使用两行代码即可轻松执行文本处理。它是高度灵活和可扩展的语言。