前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文了解Java中的commons-math3架构和用途(一)

一文了解Java中的commons-math3架构和用途(一)

原创
作者头像
Aion
修改2024-01-23 18:31:10
1.2K11
修改2024-01-23 18:31:10
举报

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

背景介绍

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

Apache Commons项目的由三部分组成:

  • The Commons Proper :一个可重用的Java组件库。(已经发布过的)
  • The Commons Sandbox :Java组件开发工作区。(正在开发的项目)
  • The Commons Dormant :当前处于非活动状态的组件库。(刚启动或者已经停止维护的项目)

如何使用math

(1)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版本,后续可能这块还会有发力。

(2)Maven中引入

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

代码语言:javascript
复制
...
<!-- 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>
...

(3)Gradle中引入

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

代码语言:javascript
复制
dependencies {
  	...
    // https://mvnrepository.com/artifact/org.apache.commons/commons-math3
		implementation group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1'
  	...
}

(4)ivy中引入

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

代码语言:javascript
复制
...
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency org="org.apache.commons" name="commons-math3" rev="3.6.1"/>
...

(5)导入后架构

导入 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

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 如何使用math
    • (1)math使用原则
      • (2)Maven中引入
        • (3)Gradle中引入
          • (4)ivy中引入
            • (5)导入后架构
            • math应用实践
              • 01 了解math3包架构
                • 02 math3库distribution包
                  • 03 math3库analysis包
                    • 04 math3库complex包
                      • 05 math3库exception包
                        • 06 math3库filter包
                          • 07 math3库fitting包
                            • 08 math3库fraction包
                              • 09 math3库genetics包
                                • 10 math3库geometry包
                                  • 11 math3库linear包
                                    • 12 math3库ml包
                                      • 13 math3库ode包
                                        • 14 math3库optim包
                                          • 15 math3库primes包
                                            • 16 math3库random包
                                              • 17 math3库stat包
                                                • 18 math3库transform包
                                                  • 19 math3库util包
                                                    • 其他不常用的类、包
                                                    • 总结
                                                    相关产品与服务
                                                    容器服务
                                                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                    领券
                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档