Java矩阵计算库UJMP
前言
Java中矩阵计算库常用的有:ujmp, ejml。
在使用中发现ujmp相对好用些,本文对此进行介绍。
UJMP
全称 Universal Java Matrix Package
官网 https://ujmp.org/
导入maven依赖
必须导入的有
<dependency><groupId>org.ujmp</groupId><artifactId>ujmp-core</artifactId><version>0.3.0</version>
</dependency>
ujmp提供gui,方便可视化。需导入
<dependency><groupId>org.ujmp</groupId><artifactId>ujmp-gui</artifactId><version>0.3.0</version>
</dependency>
UJMP常用方法
创建矩阵
矩阵元素为 数值类型。
Matrix.Factory.rand(rows, cols); // 创建rows行 cols列的Matrix,元素数值范围[0,1]
Matrix.Factory.randn(rows, cols); // 创建Matirx,元素值服从标准正态分布N(0,1)
Matrix.Factory.zeros(rows, cols); // 创建Matrix,元素值都是0DoubleMatrix.Factory.zeros(rows, cols); // 指定具体的类型为DoubleMatrix类型,则元素为double型
矩阵元素为 字符串类型
StringMatrix.Factory.zeros(rows, cols);
矩阵内单个元素的get/set
Matrix mat = Matrix.Factory.zeros(5, 4);
mat.setAsDouble(5.0, 0, 0); // 0-based index
mat.getAsDouble(0, 0); // 获取到坐标(0,0)的值
mat.getAsInt(0, 0); // 获取到值,并且转成int格式
同理:
StringMatrix2D stringMatrix2D = StringMatrix.Factory.zeros(2,2);
stringMatrix2D.setAsString("a", 0, 0);
stringMatrix2D.setAsString("b", 0, 1);
stringMatrix2D.setAsString("11", 1, 0);
stringMatrix2D.setAsString("22", 1, 1);System.out.println(stringMatrix2D);
获取矩阵行或列数值,求均值,标准差,元素替换
IrisMatrix matrix = DenseMatrix.Factory.irisMatrix(); // 获取ujmp自带的iris数据,方便演示Matrix col0 = matrix.selectColumns(Calculation.Ret.NEW, 0); // 获取matrix的某一列。第1个参数意思是输出的是一个新的矩阵,第2个参指定第几列 这里是第0列
Matrix row1 = matrix.selectRows(Calculation.Ret.NEW, 1); // 获取matrix的某一行。这里是获取第1行。
Matrix select = matrix.select(Calculation.Ret.NEW, new long[]{0,1}, new long[]{1,2}); // 获取指定范围的数据,比如 行下标0-1, 列下标1-2Matrix mean = matrix.mean(Calculation.Ret.NEW, 0, true); // 矩阵求均值。第2个参数dimension 0是对列, 1对行,第3个参数为 是否ignoreNaN
Matrix std = matrix.std(Calculation.Ret.NEW, 0, true, true); // 标准差。第2个参数是dimension, 第3个参数是ignoreNaN, 第4个参数为是否考虑贝塞尔校正(当对采样数据进行求std时,往往需要校正)Matrix matrix1 = matrix.replace(Calculation.Ret.NEW, "Iris-setosa", "0"); // replace操作。把矩阵中元素值为"Iris-setosa"替代为"0"
获取矩阵行数,列数,转置,加减乘求逆,行列式,特征值特征向量
Matrix mat = Matrix.Factory.zeros(5, 5);
mat.getRowCount(); // mat的行数
mat.getColumnCount(); // mat的列数Matrix transpose = mat.transpose(); // 矩阵转置Matrix plus = mat.plus(transpose); // 矩阵加法
Matrix minus = mat.minus(transpose); // 矩阵减法
Matrix mtimes = mat.mtimes(transpose); // 矩阵乘法
Matrix times = mat.times(2); // 矩阵elementwise乘法
mat.inv(); // 矩阵求逆mat.det(); // 矩阵的determinantMatrix[] eig = mat.eig(); // 输出的eig内有两个元素,分别是特征向量和特征值
GUI
当导入了ujmp-gui依赖后可用。
IrisMatrix matrix = DenseMatrix.Factory.irisMatrix();
matrix.showGUI(); // 将矩阵可视化
参考
https://ujmp.org/
Java矩阵计算库UJMP相关推荐
- java pem 私钥_将PEM导入Java密钥库
在我的情况下,我有一个pem文件,其中包含两个证书和一个用于相互SSL身份验证的加密私钥.所以我的pem文件看起来像这样: -----BEGIN CERTIFICATE----- ... -----E ...
- 2017国二java题库,2017全国计算机二级考试JAVA考试题库
Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心.下面是小编收集的计算机二级考试JAVA考试题库,希望大家认真阅读! 1. 某二叉树结点的前序序列为E.A.C.B.D ...
- Java机器学习库ML之十一线性SVM
线性SVM的原理就不多说了,最强大的就是libsvm库(ml库也是用这个),参考:http://blog.csdn.net/fjssharpsword/article/details/53883340 ...
- Java机器学习库ML之六关于模型迭代训练的思考
我遇到的场景是:样本集有5000万条,接近5个G,那么这样的样本集一次导入训练,我放着一天一夜都没跑出结果,机器性能还特别好,是64位linux有128G内存. 针对这样的情况,我想到的是两种思路: ...
- Java机器学习库ML之一Dataset和Instance
Java机器学习库ML官网:http://java-ml.sourceforge.net/ 对于一个机器学习库来说,最基础就是数据处理能力,ml库给了dataset和instance两个类,datas ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
- 编程方法学26:介绍Java标准库
前言 本笔记是斯坦福公开课,编程方法学的学习笔记. 总体而言,这门课讲了很多很基础的东西,具有很强的通用性. 正文 本次的笔记对应的是第二十六节课,这堂课是来讲Java标准库的知识. 1ACM lib ...
- 连连看java代码_连连看 - java代码库 - 云代码
[java]代码库/* * To change this license header, choose License Headers in Project Properties. * To chan ...
- ajax代码 java,AJAX - java代码库 - 云代码
[java]代码库1.什么是AJAX AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). 2.ajax的特点:局部刷新 3.Aj ...
最新文章
- pyhon学习问题汇总
- C++ VS2010 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- html5毕业作品开场白,毕业典礼主持人开场白
- C++ WINDOWS API 第2章 Windows API概要
- vs2008安装部署软件过程
- java 操作窗口_java selenium (十二) 操作弹出窗口
- OKHttp原理讲解之基本概念
- 【JavaP6大纲】MySQL篇:为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分
- Redis最大内存配置
- 百练:4151 电影节
- 如何在eclipse中创建jsp工程项目
- 【用es6写个机选彩票】
- 计算机替换字体怎么操作,电脑替换文字怎么操作
- RSA no_padding加密(modulus、exponent构造公钥)
- Android 折叠屏适配最全的攻略在这里
- OWASP Top 10 安全漏洞详解
- 硬件加密算法HITAG2流程分析
- 没毕业就3次跳槽的经历,走不平凡的路,让人跌破眼镜。
- java中子类会继承父类的构造方法吗
- 电脑本地,WiFi都能连上,但就是上不去网