apache的math库中的回归——regression(翻译)

By | 08月23日
Advertisement

这个Math库,虽然不向weka那样专业的ML库,但是用户友好,易用。

多元线性回归,协方差和相关性(皮尔逊和斯皮尔曼),分布测试(假设检验,t,卡方,G),统计。

数学库中还包含,Cholesky,LU,SVD,QR,特征根分解,真不错。

基本覆盖了:线代,统计,矩阵,

最优化理论

曲线拟合

常微分方程

遗传算法(GA),

还有3维的运算。。。

真应有尽有。

  1. Frequency

频率分布统计,

支持Integer,Float等(只要实现Comparable的任何类);

Count string frequencies计算字符串的频率Using case-sensitive comparison, alpha sort order (natural comparator):大小写敏感,而且以字母顺序排序(默认比较器)

Frequency f =newFrequency();
f.addValue("one");
f.addValue("One");
f.addValue("oNe");
f.addValue("Z");System.out.println(f.getCount("one"));// displays 1System.out.println(f.getCumPct("Z"));  // displays 0.5System.out.println(f.getCumPct("Ot"));// displays 0.25

Using case-insensitive comparator:大小写不敏感

Frequency f = new Frequency(String.CASE_INSENSITIVE_ORDER);
f.addValue("one");
f.addValue("One");
f.addValue("oNe");
f.addValue("Z");
System.out.println(f.getCount("one"));  // displays 3
System.out.println(f.getCumPct("z"));  // displays 1

1.5 Multiple linear regression 多元线性回归

OLSMultipleLinearRegression and GLSMultipleLinearRegression provide least squares regression to fit the linear model:

Y=X*b+u

where Y is an n-vector regressand, X is a [n,k] matrix whose k columns are called regressors, b is k-vector of regression parameters and u is an n-vector of error terms or residuals.

OLSMultipleLinearRegression provides Ordinary Least Squares Regression, and implements Generalized Least Squares. See the javadoc for these classes for details on the algorithms and forumlas used.

OLSMultipleLinearRegressionGLSMultipleLinearRegression 提供最小方差线性回归模型:

Y=X*b+u

其中,Y是一个n维的回归变量,X是m*k的矩阵,其中k列称为自变量,b是长度为k的回归参数向量。u则是误差或者残余方差。

OLSMultipleLinearRegression 提供一个常见的最小方差回归,GLSMultipleLinearRegression

Data for OLS models can be loaded in a single double[] array, consisting of concatenated rows of data, each containing the regressand (Y) value, followed by regressor values; or using a double[][] array with rows corresponding to observations. GLS models also require a double[][] array representing the covariance matrix of the error terms.

OLS模型数据可以以一维double数组加载,数组以行数据串联,每行数据包含回归方程的独立自变量和 回归方程的因变量(Y),或者二维double数组,相应的每行一组观察值。GLS模型也需要一个误差的协方差矩阵的二维的double[][]数组

See AbstractMultipleLinearRegression#newSampleData(double[],int,int), OLSMultipleLinearRegression#newSampleData(double[], double[][]) andGLSMultipleLinearRegression#newSampleData(double[],double[][],double[][]) for details.

Usage Notes:

  • Data are validated when invoking any of the newSample, newX, newY or newCovariance methods and IllegalArgumentException is thrown when input data arrays do not have matching dimensions or do not contain sufficient data to estimate the model.
  • By default, regression models are estimated with intercept terms. In the notation above, this implies that the X matrix contains an initial row identically equal to 1. X data supplied to the newX or newSample methods should not include this column - the data loading methods will create it automatically. To estimate a model without an intercept term, set the noIntercept property to true.

Here are some examples.

OLS regression
Instantiate an OLS regression object and load a dataset:

OLSMultipleLinearRegression regression =newOLSMultipleLinearRegression();double[] y =newdouble[]{11.0,12.0,13.0,14.0,15.0,16.0};double[] x =newdouble[6][];
x[0]=newdouble[]{0,0,0,0,0};
x[1]=newdouble[]{2.0,0,0,0,0};
x[2]=newdouble[]{0,3.0,0,0,0};
x[3]=newdouble[]{0,0,4.0,0,0};
x[4]=newdouble[]{0,0,0,5.0,0};
x[5]=newdouble[]{0,0,0,0,6.0};
regression.newSample(y, x);

Get regression parameters and diagnostics:

double[] beta = regression.estimateRegressionParameters();     //beta值

double[] residuals = regression.estimateResiduals();残余方差double[][] parametersVariance = regression.estimateRegressionParametersVariance();double regressandVariance = regression.estimateRegressandVariance();double rSquared = regression.calculateRSquared();//R回归方差double sigma = regression.estimateRegressionStandardError();//标准差

GLS regression
Instantiate a GLS regression object and load a dataset:

GLSMultipleLinearRegression regression =newGLSMultipleLinearRegression();double[] y =newdouble[]{11.0,12.0,13.0,14.0,15.0,16.0};double[] x =newdouble[6][];
x[0]=newdouble[]{0,0,0,0,0};
x[1]=newdouble[]{2.0,0,0,0,0};
x[2]=newdouble[]{0,3.0,0,0,0};
x[3]=newdouble[]{0,0,4.0,0,0};
x[4]=newdouble[]{0,0,0,5.0,0};
x[5]=newdouble[]{0,0,0,0,6.0};
double[][] omega =newdouble[6][];
omega[0]=newdouble[]{1.1,0,0,0,0,0};
omega[1]=newdouble[]{0,2.2,0,0,0,0};
omega[2]=newdouble[]{0,0,3.3,0,0,0};
omega[3]=newdouble[]{0,0,0,4.4,0,0};
omega[4]=newdouble[]{0,0,0,0,5.5,0};
omega[5]=newdouble[]{0,0,0,0,0,6.6};
regression.newSampleData(y, x, omega); //GLS模型需要提供OMEGA

1.7 Covariance and correlation协方差和相关性

The org.apache.commons.math3.stat.correlation package computes covariances and correlations for pairs of arrays or columns of a matrix. Covariance computes covariances, PearsonsCorrelation provides Pearson's Product-Moment correlation coefficients and SpearmansCorrelation computes Spearman's rank correlation.

Similar Posts:

  • 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

    版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在verycd可下载,可惜没有翻译.不过还是可以看.另外一个是prml-pattern recogni

  • Mahout:Error: java.lang.ClassNotFoundException: org.apache.mahout.math.Vector

    "WARN driver.MahoutDriver: No org.apache.mahout.clustering.syntheticcontrol.canopy.Job.props found on classpath, will use command-line arguments only" MAHOUT_CONF_DIR=$MAHOUT_HOME/src/conf MAHOUT_CONF_DIR=$MAHOUT_HOME/conf Error: java.lang.Class

  • C++头文件包含内容概览及字符函数库中常用的函数

    #include < assert.h>//设定插入点 #include < ctype.h> //字符处理 #include < errno.h> //定义错误码 #include < float.h> //浮点数处理 #include < fstream.h> //文件输入/输出 #include < iomanip.h> //参数化输入/输出 #include < iostream.h> //数据流输入/输出 #in

  • C Standard Library 头文件 math.h 中函数实例

    /************************************************************************************************ * 名 称: main.c * 功 能:C标准库,头文件math.h学习,笔记 * 描 述:math.h中 提供的函数说明 * 作 者:JarvisChu * 时 间:2011-7-16 创建 *******************************************************

  • JSTL标签库中&amp;lt;c:choose&amp;gt;&amp;lt;/c:choose&amp;gt;不能放JSP页面&amp;lt;!-- --&amp;gt;注释

    JSTL标签库中<c:choose></c:choose>不能放JSP页面<!-- -->注释 笔者最近在使用JSTL标签库的<c:choose>标签时候,发现在该标签体中加了JSP的<!-- -->注释时,总是会显示报错信息.错误的信息如下: <span style="font-size:18px;">org.apache.jasper.JasperException: <h3>Validation

  • 谷歌为何将数十亿行代码储存在单一代码库中?

    摘要:来自 Google 的大规模代码管理的经验之谈.monolithic repo 便于代码复用,公司范围内不同团队的人都能方便地学习以及改动所有代码,尤其是改动不同平台的代码,一个 commit 就搞定了.除了 Android 等开源项目外,Google 内大部分代码都在同一个 repo 中.这个 repo 的代码有 86 TB 之大,20 亿行源代码,共 3500 万个 commits:25000 个工程师都能访问大部分代码(除了排序算法之类的商业机密外). 早期的谷歌员工做了一个决定:创

  • MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句

    查询所有数据库占用磁盘空间大小的SQL语句: select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size, concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size from information_schema.tables group by TABLE_SCHEMA order by data_lengt

  • MySQL A库中的 user表数据到 B库中的user表中 有没有好的解决方案?

    MySQL A库中的 user表数据到 B库中的user表中 有没有好的解决方案? --cut-- gongweixin在2015-03-31 09:10:53回答到: # mysqldump -u用户名 -p密码 数据库A user表 > dump.sql # mysql -u用户名 -p密码 数据库B < dump.sql exit在2015-03-30 22:37:31回答到: 试试Navicat 的Data Transfer功能

  • 如何扫描出Android系统媒体库中视频文件

    Android系统启动时会去扫描系统文件,并将系统支持的视频文件(mp4,3gp,wmv)扫描到媒体库(MediaStore)中,下面代码演示如何获得这些文件的信息: publicstatic List<VideoInfo> sysVideoList = null;// 视频信息集合 sysVideoList = new ArrayList<VideoInfo>(); setVideoList(); privatevoid setVideoList() { // MediaStor

  • AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件

    IOS学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件 首先要导入AVFoundation框架及 下面是代码,代码中都有注释: [cpp] view plaincopy // // RootViewController.h // SoundDemo // // Created by on 13-6-21. // Copyright (c) 2013年 DoubleMan. All rights reserved. // #import <UIKit/UIKit.h> #

Tags: