统计算法|一文了解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 :当前处于非活动状态的组件库.(刚启动或者已经停止维护的项目)
在这里插入图片描述

如何使用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版本,后续可能这块还会有发力。
在这里插入图片描述

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导入后的包。
在这里插入图片描述

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包住要有常见离散和连续分布的实现。这个是最常用的一些算法的集合都在这个包,后续的实现也都是在这里。
在这里插入图片描述

03 math3库analysis包

analysis包用于常见的数值分析过程,包括根查找,功能插补和集成。
在这里插入图片描述

04 math3库complex包

complex包主要应用于复杂的数字类型和复杂的超越函数的实现。
在这里插入图片描述

05 math3库exception包

这个包就比较好理解了,都是存放的一些错误算法处理类。
在这里插入图片描述

06 math3库filter包

filter包也是很常用的一个过滤器。
在这里插入图片描述

07 math3库fitting包

fitting是曲线拟合包,他包括最小化观察和模型值之间的残差的算法。
在这里插入图片描述

08 math3库fraction包

fraction包主要是分数号类型和分数号格式。
在这里插入图片描述

09 math3库genetics包

提供遗传算法组件和实现。
在这里插入图片描述

10 math3库geometry包

geometry包提供几何算法,包括最小封闭球问题、1D、2D、3D、欧几里德空间中生成一组点的凸壳、凸壳问题、二进制空间分区树、多维排序功能以及几何组件。
在这里插入图片描述

11 math3库linear包

提供线性代数
在这里插入图片描述
在这里插入图片描述

12 math3库ml包

看到包名,其实我们应该可以猜测到,虽然没有python那么强大。机器学习算法的基础包,包括集群评估、公共距离计算、神经网络、特征图、一/二维神经网络等。
在这里插入图片描述

13 math3库ode包

ODE包主要用于常微分方程问题、非硬常态差分方程问题、离散事件、处理常用方程集成期间处理采样步骤等。
在这里插入图片描述

14 math3库optim包

optim主要是优化器、最大值、最小值问题。
在这里插入图片描述

15 math3库primes包

primes包包括素数相关的方法,如原始测试,因子分解。
在这里插入图片描述

16 math3库random包

random包包括随机数和随机数据发生器,可以从这里获取一些测试数据。
在这里插入图片描述

17 math3库stat包

stat包在基数科学计算中使用比较广泛,主要是一些数据存储,操纵和摘要例程。stat包包括相关性/协方差计算、摘要统计、概要统计(基于时刻、级别以及其他的摘要)、假设测试、二项式、排名等。在后面的博文中会着重介绍。
在这里插入图片描述

18 math3库transform包

transform包住要是一些变换方法的实现,包括快速傅里叶变换。
在这里插入图片描述

19 math3库util包

这个我感觉无需多介绍,主要是一些数学统计的工具,可以方便开发者使用。
在这里插入图片描述

其他不常用的类、包

在math3包中,上面介绍了大体的包结构和子包结构,下面介绍的这些个包我们也不是常用。
● 通用类
通用包主要是整个公共数学库中使用的常见类别
在这里插入图片描述

● 十进制浮点
在这里插入图片描述

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

● special包
主要是Beta和Gamma的是使用比较多,其他的两个类很少使用。
在这里插入图片描述

总结

本文住要介绍了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,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六月暴雪飞梨花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值