为 Java 开发者量身定制的五款机器学习库

编者按:机器学习是目前最炙手可热的技术之一,各大公司都在积极招聘相关的编程人才,来填补机器学习和深度学习代码编写的空缺。诚然,根据相关的招聘统计数据,Python 语言目前已经超越 Java 成为雇主最亟须的机器学习编程技能。但事实上,Java 在项目开发中仍然发挥着不可替代的作用,并且许多流行的机器学习框架本身就是由 Java 写成的。鉴于此前有关 Python 的参考资料已经很多,而鲜见 Java 的,因此,今天我们在这里推荐五个业内顶尖的 Java 机器学习库。原文载于 jaxenter.com 网站,AI科技评论编译。

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 已经被广泛应用于各种数据科学的相关领域,包括鲸鱼的回声定位,航天飞行操作,共享单车分配和交通预测等。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-03-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2369
来自专栏海说

Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅。 1)...

2750
来自专栏跟着阿笨一起玩NET

[C#]工具类—FTP上传下载

  不错的文章:http://www.cnblogs.com/greatverve/archive/2012/03/03/csharp-ftp.html

1241
来自专栏菩提树下的杨过

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上 using System; using System.Web; using S...

2005
来自专栏C/C++基础

C#获取系统当前时间

ystem.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=Sy...

1153
来自专栏码匠的流水账

聊聊spring cloud的LoadBalancerAutoConfiguration

本文主要研究一下spring cloud的LoadBalancerAutoConfiguration

1082
来自专栏吴伟祥

Java Calendar 类的时间操作 原

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

783
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2318
来自专栏跟着阿笨一起玩NET

C# Stream 和 byte[] 之间的转换

631
来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1941

扫码关注云+社区