超全!基于Java的机器学习项目、环境、库...

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 你是一名希望开始或者正在学习机器学习的Java程序员吗? 利用机器学习编写程序是最佳的学习方式。你可以从头开始编写算法,但是利用现有的开源库,你可以取得更大的进步。 本文介绍了主要的平台和开放源码的机器学习库。

你是一名希望开始或者正在学习机器学习的Java程序员吗?

利用机器学习编写程序是最佳的学习方式。你可以从头开始编写算法,但是利用现有的开源库,你可以取得更大的进步。

本文介绍了主要的平台和开放源码的机器学习库。你可以使用这些机器学习库。

环境

本节描述了用于机器学习的Java环境或工作域。它们提供了用于执行机器学习任务的图形用户界面,还提供了用于开发自己应用程序的Java API。

WEKA

怀卡托环境知识分析(Weka)( https:// www.cs.waikato.ac.nz/ml/weka/)是一个由新西兰怀卡托大学开发的机器学习平台。提供Java的图形用户接口,命令行接口和Java API接口。它可能是最流行的Java机器学习库,也是开始或练习机器学习的好地方。

06f3696f15a420ffef634af8e6aaa61aa4538b97

KNIME

康斯坦茨信息挖掘(KNIME)(https://www.knime. com/)是德国康斯坦茨大学开发的一个分析和报告平台。它的研发重点是药物研究,但已扩展到一般商业智能。它提供一个图形用户接口(基于Eclipse)和Java API。

ee9700626dc448d0697f8003396f4790a0462dae
快速挖掘

快速挖掘(https://rapidminer.com/)由德国多特蒙德应用技术大学研发。它提供了一个GUI和一个Java API来开发自己的应用程序。还提供了数据处理、可视化和建模的机器学习算法。

4397581256981fe8045d23f64e069b82e4710a68


  • ELKI

ELKI是一个用于开发由索引结构支持的KDD-应用程序的环境(https://elki-project.github.io/),它是由德国慕尼黑的路德维希马克西米利安大学用Java语言开发的一款数据挖掘工作平台。它的重点是在关系型数据库中处理数据,例如异常值检测和分类(基于距离函数方法)。它提供了一个迷你GUI、命令行接口和Java API。

5c44a5d33ae5e4543f6da1cfdf8ac0113cfd3e6d

其实本文列出的每个项目都带有Java API库。不过在这一节中列出的这些项目仅提供了一个Java API。从狭义上来说,它们是机器学习库。

Java-ML

Java机器学习库(Java-ML)(http://java-ml.sourceforge.net/)提供了在Java中实现的机器学习算法的集合。它为每一种算法提供了标准接口,没有UI(用户界面),也没有引用相关的科学文献来进一步阅读。它包括数据操作、群集、特性选择和分类的方法。值得注意的是,截止本文成稿为止,它的最新一个版本是在2012年。

JSAT

Java统计分析工具(JSAT)(https://github.com /EdwardRaff/JSAT/tree/master)提供了一个纯Java语言实现的标准机器学习算法,用于解决中等规模的问题。JSAT的作者称他开发的这个库部分是为了进行自我学习,部分是为了完成工作。尽管如此,算法的列表还是令人印象深刻的。它包括分类、回归、合集、聚类和特征选择方法。

Java大数据项目

本节列出了适合大数据的Java项目,例如机器集群。

Mahout (Hadoop)

Apache Mahout(https://mahout.apache.org/)提供了用于实现Apache Hadoop平台(分布式映射化简)的机器学习算法。该项目主要关注集群和分类算法,一个流行的应用程序驱动实现是它在推荐系统的协作筛选中使用。还包括在单个节点上运行算法的引用实现。

MLlib (Spark)

Apache机器学习库(MLlib)(http://spark. apache.org/mllib/)提供了用于Apache Spark平台(HDFS,而不是映射化简)机器学习算法的实现。尽管Java库和平台支持Java、Scala和Python绑定。这个库是新的,算法的列表很短,但是增长很快。

MOA

大规模在线分析(MOA)(https://moa.cms. waikato.ac.nz/)是一个开源平台,由新西兰怀卡托大学的数据流挖掘设计。和Weka相同(开发在相同的地方),提供一个GUI,命令行接口和Java API。它提供了一长串的算法,重点是分类和支持离群检测,解决概念漂移。MOA使用先进的数据挖掘和机器学习系统(ADAMS)(https://adams.cms.waikato.ac.nz/)管理工作流,开发也在相同的地方。

SAMOA

可扩展的高级在线分析(SAMOA)(http://samoa-project.net/)是一个由雅虎开发的分布式流媒体机器学习框架。它的设计运行在Apache Storm 和 Apache S4上。系统可以利用MOA项目提供的算法来完成分类等任务。

自然语言处理

本节将致力于Java库和项目,用于解决来自机器学习的子领域的问题,称之为自然语言处理(NLP)。

自然语言处理不是我的领域,所以我仅仅指出关键的库。

  • OpenNLP: Apache OpenNLP(http://opennlp. apache.org/)是处理自然语言文本的工具包,它为诸如标记化、分割和实体提取等自然语言处理任务提供了方法。
  • LingPipe:LingPipe(http://alias-i.com/lingpipe/)是计算语言学的一个工具包,包括了主题分类、实体提取、聚类和情绪分析的方法。
  • GATE: 文本工程一般结构(GATE)(http://gate.ac.uk/)是一个开源的用于文本处理的库。它提供了针对不同用例子项目的数组。
  • MALLET:机器学习语言工具包(MALLET)( http://mallet.cs.umass.edu/)是一种Java工具包,用于统计自然语言处理、文档分类、集群、主题建模和信息提取。

计算机视觉

本节列出了机器学习子领域库,称之为计算机视觉(VC)。

计算机视觉不是我熟悉的领域,所以我仅仅指出关键的库。

  • BoofCV:BoofCV(http://boofcv.org/index.php?title=Main_Page)是一个用于计算机视觉和机器人应用的开放源码库。它支持图像处理、特征、几何视觉、校准、识别和图像数据输入等功能。

深度学习

随着深度学习方法和硬件的快速发展,神经网络又重新流行起来。本节列出了用于处理神经网络和深度学习的关键Java库。

  • EncogEncog(http://www.heatonresearch.com/encog)是一个机器学习库,提供了诸如SVM、经典神经网络、遗传编程、贝叶斯网络、HMM和遗传算法的算法。
  • Deeplearning4jDeeplearning4j(http://deeplearning4j.org/)被认为是一个用Java编写的商业级的深度学习库。它被描述为与Hadoop兼容并提供了一些算法,包括受限的Boltzmann机,深层的信念网络和堆叠的降噪自动编码器。

总结

在这篇文章中,当我们在Java中选择一个用于机器学习的库或平台时,我们已经接触到了大项目名称选项。这些是倍受学习者欢迎的项目,但绝不只这些列出来的。比如:看一下MLOSS.org (http://mloss.org/software/language/java/)上的这个页面,(截止本文时)它列出了71个基于java的开源机器学习项目。这是一件很重要的工作,我相信GitHub和SourceForge还有更多的工作要做。

学习者的关键是要认真考虑自己的项目和需求。从一个库或者一个平台中找出你需要的东西,然后选择和学习一个最适合自己的项目。


原文发布时间为:2017-12-5

本文作者:Jason Brownlee

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
12天前
|
安全 druid Java
Java 访问数据库的奇妙之旅
本文介绍了Java访问数据库的几种常见方式
39 12
|
3月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
55 6
|
3月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
41 1
|
3月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
96 6
|
3月前
|
Java API Apache
|
3月前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
95 3
|
3月前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
208 1
|
4月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
302 0
在Java中处理JSON数据:Jackson与Gson库比较
|
5月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
198 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
4月前
|
机器学习/深度学习 算法 PyTorch
【机器学习】大模型环境下的应用:计算机视觉的探索与实践
【机器学习】大模型环境下的应用:计算机视觉的探索与实践
113 1