1.关于jblas

jblas is a fast linear algebra library for Java. jblas is based on BLAS and LAPACK, the de-facto industry standard for matrix computations, and uses state-of-the-art implementations like ATLAS for all its computational routines, making jBLAS very fast.

主页地址:http://jblas.org/
该库的API文档地址:http://jblas.org/javadoc/index.html
在Java工程中我们只要 引入jar包文件就可以了。

下面是其小册子:

jblas - Fast matrix computations for Java

class="scribd_iframe_embed" src="https://www.scribd.com/embeds/104872010/content?start_page=1&view_mode=scroll&show_recommendations=true" scrolling="no" id="doc_32955" width="100%" height="600"> ## 2.共轭梯度下降的例子:

import org.jblas.*;
import static org.jblas.DoubleMatrix.*;
import static org.jblas.MatrixFunctions.*;/*** Example of how to implement conjugate gradienst with jblas.** Again, the main objective of this code is to show how to use* jblas, not how to package/modularize numerical code in Java ;)** Closely follows http://en.wikipedia.org/wiki/Conjugate_gradient_method*/
public class CG {public static void main(String[] args) {new CG().runExample();}void runExample() {int n = 100;double w = 1;double lambda = 1e-6;DoubleMatrix[] ds = sincDataset(n, 0.1);//ds[0].print();//ds[1].print();DoubleMatrix A = gaussianKernel(w, ds[0], ds[0]).add( eye(n).mul(lambda) );DoubleMatrix x = zeros(n);DoubleMatrix b = ds[1];cg(A, b, x, lambda);}DoubleMatrix cg(DoubleMatrix A, DoubleMatrix b, DoubleMatrix x, double thresh) {int n = x.length;DoubleMatrix r = b.sub(A.mmul(x));DoubleMatrix p = r.dup();double alpha = 0, beta = 0;DoubleMatrix r2 = zeros(n), Ap = zeros(n);while (true) {A.mmuli(p, Ap);alpha = r.dot(r) / p.dot(Ap);x.addi(p.mul(alpha));r.subi(Ap.mul(alpha), r2);double error = r2.norm2();System.out.printf("Residual error = %f\n", error);if (error < thresh)break;beta = r2.dot(r2) / r.dot(r);r2.addi(p.mul(beta), p);DoubleMatrix temp = r;r = r2;r2 = temp;}return x;}/*** Compute the Gaussian kernel for the rows of X and Z, and kernel width w.*/public static DoubleMatrix gaussianKernel(double w, DoubleMatrix X, DoubleMatrix Z) {DoubleMatrix d = Geometry.pairwiseSquaredDistances(X.transpose(), Z.transpose());return exp(d.div(w).neg());}/*** The sinc function (save version).** This version is save, as it replaces zero entries of x by 1.* Then, sinc(0) = sin(0) / 1 = 1.**/DoubleMatrix safeSinc(DoubleMatrix x) {return sin(x).div(x.add(x.eq(0)));}/*** Create a sinc data set.**   X ~ uniformly from -4..4*   Y ~ sinc(x) + noise * gaussian noise.*/DoubleMatrix[] sincDataset(int n, double noise) {DoubleMatrix X = rand(n).mul(8).sub(4);DoubleMatrix Y = safeSinc(X) .add( randn(n).mul(noise) );return new DoubleMatrix[] {X, Y};}
}

3.岭回归例子

import org.jblas.*;
import static org.jblas.DoubleMatrix.*;
import static org.jblas.MatrixFunctions.*;/*** A simple example which computes kernel ridge regression using jblas.** This code is by no means meant to be an example of how you should do* machine learning in Java, as there is absolutely no encapsulation. It* is rather just an example of how to use jblas to perform different kinds* of computations.*/
public class KRR {public static void main(String[] args) {int n = 1000;double w = Double.valueOf(args[0]);double lambda = Double.valueOf(args[1]);new KRR().run(n, w, lambda);}void run(int n, double w, double lambda) {DoubleMatrix[] ds = sincDataset(n, 0.1);DoubleMatrix alpha = learnKRR(ds[0], ds[1], w, lambda);DoubleMatrix Yh = predictKRR(ds[0], ds[0], w, alpha);DoubleMatrix XE = rand(1000).mul(8).sub(4);System.out.printf("Mean squared error = %.5f\n", mse(Yh, ds[1]));}/*** The sinc function.** This version is not save since it divides by zero if one* of the entries of x are zero.*/DoubleMatrix sinc(DoubleMatrix x) {return sin(x).div(x);}/*** The sinc function (save version).** This version is save, as it replaces zero entries of x by 1.* Then, sinc(0) = sin(0) / 1 = 1.**/DoubleMatrix safeSinc(DoubleMatrix x) {return sin(x).div(x.add(x.eq(0)));}/*** Create a sinc data set.**   X ~ uniformly from -4..4*   Y ~ sinc(x) + noise * gaussian noise.*/DoubleMatrix[] sincDataset(int n, double noise) {DoubleMatrix X = rand(n).mul(8).sub(4);DoubleMatrix Y = safeSinc(X) .add( randn(n).mul(noise) );return new DoubleMatrix[] {X, Y};}/*** Compute the alpha for Kernel Ridge Regression.** Computes alpha = (K + lambda I)^-1 Y.*/DoubleMatrix learnKRR(DoubleMatrix X, DoubleMatrix Y,double w, double lambda) {int n = X.rows;DoubleMatrix K = gaussianKernel(w, X, X);K.addi(eye(n).muli(lambda));DoubleMatrix alpha = Solve.solveSymmetric(K, Y);return alpha;}/*** Compute the Gaussian kernel for the rows of X and Z, and kernel width w.*/DoubleMatrix gaussianKernel(double w, DoubleMatrix X, DoubleMatrix Z) {DoubleMatrix d = Geometry.pairwiseSquaredDistances(X.transpose(), Z.transpose());return exp(d.div(w).neg());}/*** Predict KRR on XE which has been trained on X, w, and alpha.** In a real world application, you would put all the data from training* in a class of its own, of course!*/DoubleMatrix predictKRR(DoubleMatrix XE, DoubleMatrix X, double w, DoubleMatrix alpha) {DoubleMatrix K = gaussianKernel(w, XE, X);return K.mmul(alpha);}double mse(DoubleMatrix Y1, DoubleMatrix Y2) {DoubleMatrix diff = Y1.sub(Y2);return pow(diff, 2).mean();}
}

3.LBFGS的例子

相关例子和库文件jar包下载 http://download.csdn.net/detail/u012176591/8660849

————————————————————


安装jar包的javadoc文档

加入jblas的jar包的javadoc文档,这样使得我们能够在eclipse中方便地查看方法或对象的参数和用法。
首先将Javadoc压缩文件解压到某处,如下:

Package Explorer视图中,选择jar包,右键单击Properties,在弹出框中作如下设置

在程序中,将鼠标放到类名或方法名上,自动弹出其用法。效果如下:

eclipse设置Java命令行执行参数

如下图所示,程序执行时需要两个参数,需要我们在执行程序之前对其进行设定。

下面是设置方法,首先右键java文件–>运行方式–>运行配置,打开配置文件,如下:

对自变量进行设置,这里设置两个数字,分别对应两个参数。

Java线性代数库jblas的应用举例相关推荐

  1. GitHub上那些值得一试的JAVA开源库--转

    原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...

  2. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  3. Armadillo 线性代数库中的聚类算法避坑

    1.本文的由来 最近由于需要在C++语言编写的项目中使用高斯混合模型聚类算法,最开始是打算自己写一个的(参考的是<机器学习>,周志华著这本书),但是最后发现自己写的算法运行效率低,而且对于 ...

  4. pattern java怎么用_Pattern Java设计模式23种每个一个举例使用,名称直接对应英文,简单明了 Develop 238万源代码下载- www.pudn.com...

    文件名称: Pattern下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 156 KB 上传时间: 2014-05-17 下载次数: 2 提 供 者: 王小雄 详 ...

  5. 基于C++模板的线性代数库---Eigen

    Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便.此外,Eigen的接口清晰,稳定高效. 在解决方案"属性"中的&quo ...

  6. java pem 私钥_将PEM导入Java密钥库

    在我的情况下,我有一个pem文件,其中包含两个证书和一个用于相互SSL身份验证的加密私钥.所以我的pem文件看起来像这样: -----BEGIN CERTIFICATE----- ... -----E ...

  7. 2017国二java题库,2017全国计算机二级考试JAVA考试题库

    Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心.下面是小编收集的计算机二级考试JAVA考试题库,希望大家认真阅读! 1. 某二叉树结点的前序序列为E.A.C.B.D ...

  8. Java机器学习库ML之十一线性SVM

    线性SVM的原理就不多说了,最强大的就是libsvm库(ml库也是用这个),参考:http://blog.csdn.net/fjssharpsword/article/details/53883340 ...

  9. Java机器学习库ML之六关于模型迭代训练的思考

    我遇到的场景是:样本集有5000万条,接近5个G,那么这样的样本集一次导入训练,我放着一天一夜都没跑出结果,机器性能还特别好,是64位linux有128G内存. 针对这样的情况,我想到的是两种思路: ...

最新文章

  1. hibernate中inverse作用
  2. ArcGIS实验教程——实验十九:网络分析(最短路径实现)
  3. Spring Data JPA 从入门到精通~Specification工作中的一些扩展
  4. cfree运行程序错误_C/C++程序调试和内存检测
  5. 微信开发SDK,Jeewx-Api 1.3.1 版本发布
  6. mongodb 如何更改端口号_Centos7配置MongoDB以及端口修改
  7. C#:DataTable判断是否存在某列
  8. android系统内置第三方app
  9. 神舟笔记本键盘灯不亮驱动
  10. 魔兽地图服务器修改,魔兽争霸3冰封王座地图编辑器修改无限人口的方法
  11. 交换机接口的三种模式
  12. dcdc模块降额设计_爱默生网络能源PCB设计规范
  13. robotframework调用python类方法_【RF基础】RF调用Python函数基础
  14. 水果店开业活动策划,水果店开业怎么搞活动
  15. C++笔记: 函数_Hammond‘s blog
  16. xcode 可以打开xmind_XMind 推出的轻量化脑图工具,时隔两年迎来大版本更新:Lighten 2...
  17. Unity3D UGUI 渐变效果
  18. web渗透测试学习路径图
  19. python爬虫爬取微信_Python爬虫爬取微信小程序
  20. js网页动画,如何做一款高逼格不失真的动画

热门文章

  1. 驰骋工作流Jflow的安装讲解
  2. C++ 构造函数和析构函数 详解
  3. IDEA方法上面注释模板
  4. 老子的软件之道 - 道篇 5 企业管理
  5. Linux进程 exec族函数(execl,execlp,execle,execv,execvp,execcvpe)
  6. 想自己创业开代理记账公司可能吗
  7. 打印机常见六大故障的解决方法
  8. windows server2008安装tomcat
  9. Android系统时间更新机制
  10. 微信会成为中国大妈的下一个时尚吗?