机器学习是目前最炙手可热的技术之一,各大公司都在积极招聘相关的编程人才,来填补机器学习和深度学习代码编写的空缺。诚然,根据相关的招聘统计数据,Python 语言目前已经超越 Java 成为雇主最亟须的机器学习编程技能。但事实上,Java 在项目开发中仍然发挥着不可替代的作用,并且许多流行的机器学习框架本身就是由 Java 写成的。鉴于此前有关 Python 的参考资料已经很多,而鲜见 Java 的,因此,今天我们在这里推荐五个业内顶尖的 Java 机器学习库。原文载于 jaxenter.com 网站,雷锋网(公众号:雷锋网)编译。
Weka
地址:http://www.cs.waikato.ac.nz/ml/weka/index.html
毫无疑问,Weka 是目前首选的 Java 机器学习库。
它由新西兰怀卡托大学(University of Waikato)的机器学习项目组研发。其命名来源于一种新西兰特有的不会飞的鸟——新西兰秧鸡,新西兰秧鸡的英文名称就是 Weka。按照官网描述,Weka 吸收了许多目前常用的机器学习算法,并且完全基于 Java 环境,开源,免费,具有易于使用的图形界面,适合于数据挖掘,数据分析和预测建模等多种应用场景。
来自怀卡托大学的计算机科学教授 Eibe Frank 表示:“Weka 最大的优势在于分类,因此需要自动数据分类的应用程序可以从中获益。但同时它也支持数据预处理、聚类、关联规则挖掘、时间序列预测、特征选择、和异常检测等场景。”
开发者可以直接通过 Weka 软件处理目标数据集,同时也支持用户在自己编写的代码中调用,将 Weka 视为一个灵活的组件。更贴心的是,怀卡托大学还提供了许多免费的基于 Weka 的数据挖掘和机器学习视频教程,感兴趣的朋友可以在 Weka 官网点击查看。
Massive Online Analysis (MOA)
地址:http://moa.cms.waikato.ac.nz/
和 Weka 一脉相承,MOA 的命名也是来源于一种新西兰特有的无翼大鸟——新西兰恐鸟(目前已灭绝)。MOA 也是基于 Java 环境,开源,免费,在面对复杂问题时,MOA 还能和 Weka 协同工作。
MOA 在运算效率和内存占用方面都做了特殊优化,通过提供易于扩展的底层结构、可复用的数据流分析设置以及一系列内部实现好机器学习算法,MOA 为实时数据流分析提供了一个非常优秀的基准框架,因此在实时数据流挖掘领域的应用非常广泛。其内部实现的机器学习算法包括:分类、回归、聚类、孤立点检测、概念漂移检测和推荐系统等。此外,MOA 还提供了多种评估工具,以及活跃的社区讨论、博客等配套资源。
Deeplearning4j
地址:https://deeplearning4j.org/
Deeplearning4j(Deep Learning For Java)是 Java 和 Scala 环境下的一个开源分布式的深度学习项目,由总部位于美国旧金山的商业智能和企业软件公司 Skymind 牵头开发,并得到了腾讯的投资。正如它的命名,Deeplearning4j 的运行需要 Java 虚拟机 JVM 的支持。
去年,JAXenter 社区曾提名 Deeplearning4j 作为 Java 生态系统最具创新的贡献者之一。
Deeplearning4j 旨在为工作在 Hadoop 框架下的 Java、Scala 和 Clojure 程序员提供一个可以灵活 DIY 的机器学习工具。团队在官网表示,他们希望通过一些机器学习算法的开发,将商业带入智能化数据的时代。也正是为了实现这一理想,惠及更多的用户,因此选择了移植性更好的 Java 环境来实现这些算法。目前,Deeplearning4j 在模式识别、时间序列检测和基于语音、文本的情感识别方面应用广泛,包括谷歌、Facebook 和微软等巨头公司都是它的用户。
MALLET
地址:http://mallet.cs.umass.edu/
MALLET 主要由来自麻省大学(University of Massachusetts)的 Andrew McCallum 教授和其学生开发,是一个基于 Java 环境的开源机器学习工具包。主要应用于统计自然语言处理,文档分类,聚类,主题建模,信息提取等文本类分析场景。
MALLET 内部实现了许多功能强大的工具,包括用于文档分类的高级工具,用于序列标记的工具,和用于主题建模的工具等。MALLET 还支持各种类型的算法,包括朴素贝叶斯,决策树和最大熵等。此外,MALLET 还提供了许多例程,包括分词,删除停用词,将文本转换为向量表示等。
ELKI
地址:https://elki-project.github.io/
ELKI 的全称是:Environment for Developing KDD-Applications Supported by Index-Structures,即由索引结构支持的 KDD 应用开发环境,这里 KDD 是指 Knowledge Discovery in Database,即知识发现。
ELKI 也是一款知名的基于 Java 环境的数据挖掘软件。ELKI 的重点是算法研究,强调聚类分析,数据库索引和孤立点检测等无监督方法。ELKI 可以对数据挖掘算法和数据管理任务进行各自独立的分析,这在其他数据挖掘框架(如 Weta 和 Rapidminer)中是独一无二的。此外,ELKI 还支持各种数据类型和文件格式,以及各种相似性度量方法。
ELKI 专为研究人员和学生设计,提供了大量可灵活配置的算法参数,以便进行简单和公平的算法评估。目前 ELKI 已经被广泛应用于各种数据科学的相关领域,包括鲸鱼的回声定位,航天飞行操作,共享单车分配和交通预测等。
来源:jaxenter