统计算法|一文了解Java中的commons-math3架构和用途(一)

这篇具有很好参考价值的文章主要介绍了统计算法|一文了解Java中的commons-math3架构和用途(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者
🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

在网上搜索了下,使用Java做一些简单的数据分析的比较少,大多数都是使用Python和Scala语言引入的内置库或者第三方库。而在Java中的篇幅介绍少之又少,所以也衍生出来了想要写几篇详细的介绍,用来介绍我Java区的数据分析的文章。

背景介绍

Apache Commons是Apache软件基金会的项目,曾隶属于Jakarta项目。Commons的目的是提供可重用的、开源的Java代码。他们都是隶属于Apache 基金会ASF,基金会建立和维护可重用的Java组件,使用组件可以提高开发效率和质量。在Commons项目中,有大家耳熟能详的工具包,比如BeanUtils、Collections、Compress、Crypto、Email、Exec、FileUpload、IO、Lang、Math、Net、Validator等。而今天我要讲解的是Math这个包。

Apache Commons项目的由三部分组成:
● The Commons Proper :一个可重用的Java组件库。(已经发布过的)
● The Commons Sandbox :Java组件开发工作区. (正在开发的项目)
● The Commons Dormant :当前处于非活动状态的组件库.(刚启动或者已经停止维护的项目)
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

如何使用math

math使用原则

math3可谓是轻量级自容器的数学和统计计算方法类包,包含大多数常用的数值算法。在Apache Commons 项目中,math3是一个数学库,使用原则:
1、真实世界的应用程序用例决定了开发优先级。
2、这个包强调小型、易于集成的组件,而不是具有复杂依赖项和配置的大型库。
3、所有算法都有完整的文档记录,并遵循普遍接受的最佳实践。
4、在存在多种标准算法的情况下,策略模式用于支持多种实现。
5、有限的依赖关系。除了Commons组件和核心Java平台之外,没有外部依赖关系(至少Java1.3到1.2版本的库,至少Java5从2.0版本的库开始)。
目前的稳定版本为commons-math3,测试版本为commons-math4-4.0-beta1,相关下载地址:https://commons.apache.org/math/download_math.cgi
在Maven仓库中,math3版本的从3.0开始,目前最新版本是3.6.1,在官方看到有4.0版本的介绍以及beta版本,后续可能这块还会有发力。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

Maven中引入

在pom.xml中引入math3包,下面就是我引入的方式,直接拷贝到XML文件中使用maven自动下载导入即可。

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

Gradle中引入

在gradle.xml中引入math3包,下面就是我引入的方式,直接拷贝到XML文件中使用maven自动下载导入即可。

dependencies {
  	...
    // https://mvnrepository.com/artifact/org.apache.commons/commons-math3
		implementation group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1'
  	...
}

ivy中引入

在ivy.xml中引入math3包,下面就是我引入的方式,直接拷贝到XML文件中使用maven自动下载导入即可。

...
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency org="org.apache.commons" name="commons-math3" rev="3.6.1"/>
...

导入后架构

导入 Apache Commons Math 3 库后 , 就可以使用该库的功能了 , 注意配置了上述依赖后 , 确保网络通常 , Gradle 或 Maven 或 ivy 构建工具会自动从远程 Maven 中央仓库下载对应的依赖库 。当前我是在IDEA中使用Maven导入后的包。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

math应用实践

01 了解math3包架构

以下是math3的包结构和简单介绍,如果你想了解更多的各个包下的接口和实现,请参考Apache Commons math3 3.6.1 API文档。
math包又分为很多功能子包,例如analysis、stat、distribution、geometry、ml、optim等。
org.apache.commons.math3
org.apache.commons.math3.analysis
org.apache.commons.math3.analysis.differentiation
org.apache.commons.math3.analysis.function
org.apache.commons.math3.analysis.integration
org.apache.commons.math3.analysis.integration.gauss
org.apache.commons.math3.analysis.interpolation
org.apache.commons.math3.analysis.polynomials
org.apache.commons.math3.analysis.solvers
org.apache.commons.math3.complex
org.apache.commons.math3.dfp
org.apache.commons.math3.distribution
org.apache.commons.math3.distribution.fitting
org.apache.commons.math3.exception
org.apache.commons.math3.exception.util
org.apache.commons.math3.filter
org.apache.commons.math3.fitting
org.apache.commons.math3.fitting.leastsquares
org.apache.commons.math3.fraction
org.apache.commons.math3.genetics
org.apache.commons.math3.geometry
org.apache.commons.math3.geometry.enclosing
org.apache.commons.math3.geometry.euclidean.oned
org.apache.commons.math3.geometry.euclidean.threed
org.apache.commons.math3.geometry.euclidean.twod
org.apache.commons.math3.geometry.euclidean.twod.hull
org.apache.commons.math3.geometry.hull
org.apache.commons.math3.geometry.partitioning
org.apache.commons.math3.geometry.partitioning.utilities
org.apache.commons.math3.geometry.spherical.oned
org.apache.commons.math3.geometry.spherical.twod
org.apache.commons.math3.linear
org.apache.commons.math3.ml
org.apache.commons.math3.ml.clustering
org.apache.commons.math3.ml.clustering.evaluation
org.apache.commons.math3.ml.distance
org.apache.commons.math3.ml.neuralnet
org.apache.commons.math3.ml.neuralnet.oned
org.apache.commons.math3.ml.neuralnet.sofm
org.apache.commons.math3.ml.neuralnet.sofm.util
org.apache.commons.math3.ml.neuralnet.twod
org.apache.commons.math3.ml.neuralnet.twod.util
org.apache.commons.math3.ode
org.apache.commons.math3.ode.events
org.apache.commons.math3.ode.nonstiff
org.apache.commons.math3.ode.sampling
org.apache.commons.math3.optim
org.apache.commons.math3.optim.linear
org.apache.commons.math3.optim.nonlinear.scalar
org.apache.commons.math3.optim.nonlinear.scalar.gradient
org.apache.commons.math3.optim.nonlinear.scalar.noderiv
org.apache.commons.math3.optim.nonlinear.vector
org.apache.commons.math3.optim.nonlinear.vector.jacobian
org.apache.commons.math3.optim.univariate
org.apache.commons.math3.optimization
org.apache.commons.math3.optimization.direct
org.apache.commons.math3.optimization.fitting
org.apache.commons.math3.optimization.general
org.apache.commons.math3.optimization.linear
org.apache.commons.math3.optimization.univariate
org.apache.commons.math3.primes
org.apache.commons.math3.random
org.apache.commons.math3.special
org.apache.commons.math3.stat
org.apache.commons.math3.stat.clustering
org.apache.commons.math3.stat.correlation
org.apache.commons.math3.stat.descriptive
org.apache.commons.math3.stat.descriptive.moment
org.apache.commons.math3.stat.descriptive.rank
org.apache.commons.math3.stat.descriptive.summary
org.apache.commons.math3.stat.inference
org.apache.commons.math3.stat.interval
org.apache.commons.math3.stat.ranking
org.apache.commons.math3.stat.regression
org.apache.commons.math3.transform
org.apache.commons.math3.util

02 math3库distribution包

distribution包住要有常见离散和连续分布的实现。这个是最常用的一些算法的集合都在这个包,后续的实现也都是在这里。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

03 math3库analysis包

analysis包用于常见的数值分析过程,包括根查找,功能插补和集成。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

04 math3库complex包

complex包主要应用于复杂的数字类型和复杂的超越函数的实现。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

05 math3库exception包

这个包就比较好理解了,都是存放的一些错误算法处理类。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

06 math3库filter包

filter包也是很常用的一个过滤器。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

07 math3库fitting包

fitting是曲线拟合包,他包括最小化观察和模型值之间的残差的算法。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

08 math3库fraction包

fraction包主要是分数号类型和分数号格式。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

09 math3库genetics包

提供遗传算法组件和实现。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

10 math3库geometry包

geometry包提供几何算法,包括最小封闭球问题、1D、2D、3D、欧几里德空间中生成一组点的凸壳、凸壳问题、二进制空间分区树、多维排序功能以及几何组件。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

11 math3库linear包

提供线性代数
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

12 math3库ml包

看到包名,其实我们应该可以猜测到,虽然没有python那么强大。机器学习算法的基础包,包括集群评估、公共距离计算、神经网络、特征图、一/二维神经网络等。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

13 math3库ode包

ODE包主要用于常微分方程问题、非硬常态差分方程问题、离散事件、处理常用方程集成期间处理采样步骤等。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

14 math3库optim包

optim主要是优化器、最大值、最小值问题。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

15 math3库primes包

primes包包括素数相关的方法,如原始测试,因子分解。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

16 math3库random包

random包包括随机数和随机数据发生器,可以从这里获取一些测试数据。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

17 math3库stat包

stat包在基数科学计算中使用比较广泛,主要是一些数据存储,操纵和摘要例程。stat包包括相关性/协方差计算、摘要统计、概要统计(基于时刻、级别以及其他的摘要)、假设测试、二项式、排名等。在后面的博文中会着重介绍。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

18 math3库transform包

transform包住要是一些变换方法的实现,包括快速傅里叶变换。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

19 math3库util包

这个我感觉无需多介绍,主要是一些数学统计的工具,可以方便开发者使用。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

其他不常用的类、包

在math3包中,上面介绍了大体的包结构和子包结构,下面介绍的这些个包我们也不是常用。
● 通用类
通用包主要是整个公共数学库中使用的常见类别
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

● 十进制浮点
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

● optimization包
此包在v3.6.1已经全部不建议使用了,所以放在这里。optimization包包括线性、拟合、曲线、最小算法等。

● special包
主要是Beta和Gamma的是使用比较多,其他的两个类很少使用。
commons-math3,# 技术|开发工具,技术应用,统计算法,Java,Commons-math3

总结

本文住要介绍了Commons项目大家族的包,具体介绍了Math包下的架构以及一些子包的分类以及用途。下一篇具体讲解包下类的使用以及注意点。


[引用]

  1. Commons官方主页:https://commons.apache.org/
  2. ASF官方项目主页:https://www.apache.org/index.html#projects-list
  3. math3 APIs:https://commons.apache.org/proper/commons-math/javadocs/api-3.6.1/index.html

欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。文章来源地址https://www.toymoban.com/news/detail-846836.html

到了这里,关于统计算法|一文了解Java中的commons-math3架构和用途(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】 一文了解docker中的网络

    例如:bridge(桥接)、host(主机)、overlay(覆盖)和macvlan(MACVLAN)等。这意味着可以根据具体的场景和需求来选择使用哪一种网络驱动程序。 在该模式下,容器将配置为使用Docker守护进程上的bridge网络。这使得所有同一网络的容器都能够相互通信,并且可以使用连接到宿

    2024年02月14日
    浏览(27)
  • 一文了解Python中的while循环语句

    目录 🥩循环语句是什么 🥩while循环 🥩遍历猜数字 🥩while循环嵌套 🥩while循环嵌套案例      🦐博客主页:大虾好吃吗的博客      🦐专栏地址:Python从入门到精通专栏         循环语句在编程中非常有用,可以帮助我们重复执行特定的代码块,从而实现一些重复性

    2024年02月15日
    浏览(33)
  • 一文了解io包中的discard类型

    io.discard 是Go语言标准库提供一个结构体类型,其在丢弃不需要的数据场景下非常好用。本文我们将从 io.discard 类型的基本定义出发,讲述其基本使用和实现原理,接着简单描述 io.discard 的使用场景,基于此完成对 io.discard 类型的介绍。 io.discard 是 Go语言提供的一个 Writer ,这

    2024年02月15日
    浏览(32)
  • 一文了解Python中的注释及变量

    目录 🥩1.注释 🍕1.1.注释 🍕1.2.注释分类 🥩2.变量 🌮2.1.变量的定义 🌮2.2.变量的类型 🌮2.3.查看数据类型 🌮2.4.命名规范 🌮2.5.类型转换 🍣2.5.1.转换为整数 🍣2.5.2.转换为浮点数 🍣2.5.3.转换为字符串 🍣2.5.4.转换为布尔类型      🦐博客主页:大虾好吃吗的博客    

    2024年02月12日
    浏览(32)
  • 【云原生】· 一文了解docker中的网络

    目录 🍒查看docker网络 🍒bridge网络 🍒none网络 🍒host网络 🍒自定义容器网络     🦐博客主页:大虾好吃吗的博客     🦐专栏地址:云原生专栏         根据前面的学习,已经对docker有了一些简单的概念。这里在啰嗦一句, 容器是一个独立的环境 ,可以理解为一个小

    2024年02月09日
    浏览(33)
  • 一文了解MySQL中的多版本并发控制

    作者:京东零售  李泽阳 最近在阅读《认知觉醒》这本书,里面有句话非常打动我: 通过自己的语言,用最简单的话把一件事情讲清楚,最好让外行人也能听懂。 也许这就是大道至简,只是我们习惯了烦琐和复杂。 希望借助今天这篇文章,能用大白话说清楚这个相对比较

    2023年04月11日
    浏览(32)
  • 一文带你迅速了解下Spring中的AOP

    AOP(Aspect Oriented Programming):面向切面编程。 面向切面编程是一种思想,其实就是对某一类事情进行统一的处理。而 SpringAOP就是一种AOP的具体实现的框架。这就好比 IOC 和 DI 一样的关系。 上述就是对登录功能进行了一个统一的处理! 除了上面的判断登录之外,还有: 统一日

    2024年02月13日
    浏览(29)
  • 【MySQL】一文带你了解MySQL中的子查询

    子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入 。 SQL 中子查询的使用大大增强了 SELECT 查询的能力 ,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量

    2024年02月08日
    浏览(38)
  • MAVEN利器:一文带你了解MAVEN中的依赖管理

    强大的构建工具——Maven。作为Java生态系统中的重要组成部分,Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用,Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等任务。 在上一篇文章中,我们学习

    2024年02月10日
    浏览(28)
  • 一文带你了解区块链中15种共识算法

    区块链技术席卷全球,提供了一种去中心化且安全的信息存储和传输方式。它还彻底改变了交易的执行方式,随之而来的是广泛的共识算法。在这里,共识算法在确保区块链网络的完整性方面发挥着关键作用。在本文中,我们将探讨所有主要类型的区块链共识算法、它们的含

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包