标签: least-squares

如何在MATLAB中使用最小二乘逼近?

对于线性代数中的家庭作业,我使用MATLAB的\运算符(这是推荐的方法)解决了以下等式:

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

产生以下答案:

x =
1.7000
2.0800

对于赋值的下一部分,我应该使用最小二乘近似来求解相同的等式(然后将其与先前值进行比较以查看近似的精确度).

如何在MATLAB中找到这样做的方法?

以前的工作:我找到了函数lsqlin,它似乎能够解决上述类型的方程,但我不明白哪个参数提供它,也不知道它的顺序.

math matlab linear-algebra least-squares

5
推荐指数
1
解决办法
4万
查看次数

使用非常大或非常小的数字时scipy.optimize.fmin_slsqp的问题

有没有人在使用非常大或非常小的数字时遇到过fmin_slsqp(或scipy.optimize中的任何其他内容)的问题?

我正在研究一些python代码来拍摄灰度图像和蒙版,生成直方图,然后将多个高斯拟合到直方图.为了开发代码,我使用了一个小样本图像,经过一些工作后,代码运行得非常出色.但是,当我首先对直方图进行标准化,生成bin值<< 1时,或者当我对巨大的图像进行直方图编码时,生成数十万的bin值,fmin_slsqp()会偶尔失败.它仅在约5次迭代后退出,通常只返回我给它的初始猜测的略微修改版本,并返回退出模式8,这意味着"linesearch的正方向导数".如果我在开始时检查bin计数的大小并将它们缩放到~100-1000附近,fmin_slsqp()将照常工作.我只是在返回结果之前取消缩放.我想我可以这样离开,但感觉就像一个黑客.

我环顾四周,发现人们在谈论epsilon值,这基本上是用于近似衍生物的dx,但调整没有帮助.除此之外我还没有找到任何有用的东西.任何想法将不胜感激.提前致谢.

詹姆士

python gaussian histogram scipy least-squares

5
推荐指数
2
解决办法
4231
查看次数

多重回归

为了组合同一变量的3个不同的估计器,我需要在Java中实现多元回归方法(因此3个独立变量和1个因变量).我正在寻找一种简单的方法(就像多元回归方法一样简单).从我所做的搜索来看,我认为最小二乘法应该是一种适当的方法,但我想知道你是否建议任何其他方法.我也没能找到关于在多变量上下文最小二乘法的执行任何好的文档,所以我将不胜感激,如果你可以指向我,我可以使用任何良好的信息/来源.

java regression linear-regression least-squares

5
推荐指数
1
解决办法
8352
查看次数

5
推荐指数
2
解决办法
1万
查看次数

加权最小二乘法 - 将平面拟合到三维点集

我使用最小二乘法将平面拟合到3D点集.我已经有了算法来做到这一点,但我想修改它以使用加权最小二乘法.意思是每个点都有一个重量(重量越大,平面越接近该点).

当前算法(无重量)如下所示:

计算总和:

for(Point3D p3d : pointCloud) {
    pos = p3d.getPosition();
    fSumX += pos[0];
    fSumY += pos[1];
    fSumZ += pos[2];
    fSumXX += pos[0]*pos[0];
    fSumXY += pos[0]*pos[1];
    fSumXZ += pos[0]*pos[2];
    fSumYY += pos[1]*pos[1];
    fSumYZ += pos[1]*pos[2];
}
Run Code Online (Sandbox Code Playgroud)

而不是制作矩阵:

double[][] A = {
    {fSumXX, fSumXY, fSumX},
    {fSumXY, fSumYY, fSumY},
    {fSumX,  fSumY,  pointCloud.size()}
};

double[][] B =  {
    {fSumXZ},
    {fSumYZ},
    {fSumZ}
};
Run Code Online (Sandbox Code Playgroud)

比解Ax = B,解的3个分量是拟合平面的系数...

那么,你能帮助我如何修改它来使用权重吗?谢谢!

algorithm math geometry linear-algebra least-squares

5
推荐指数
1
解决办法
6224
查看次数

我如何找出lambda函数需要多少个参数

我正在尝试创建一个函数,它将根据传入的lambda函数进行最小二乘拟合.我想创建一个长度为零的数组,该数组的长度等于lambda函数对lambda函数的初始猜测所采用的参数数量.所以如果它的线性我想要[0,0]而对于二次我想要[0,0,0].

#polynomial functions
linear = lambda p, x: p[0] * x + p[1]
quadratic = lambda p, x: p[0] * x**2 + p[1] * x + p[2]
cubic = lambda p, x: p[0] * x**3 + p[1] * x**2 + p[2] * x + p[3]

#polynomial functions forced through 0
linear_zero = lambda p, x: p[0] * x 
quadratic_zero = lambda p, x: p[0] * x**2 + p[1] * x 
cubic_zero = lambda p, x: p[0] * x**3 + p[1] …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy least-squares

5
推荐指数
1
解决办法
524
查看次数

使用java计算最小二乘法

我试图找到一个java代码来计算Ax = b方程中的最小二乘解(x).假设

A = [1 0 0;1 0 0];
b = [1; 2];

x = A\b
Run Code Online (Sandbox Code Playgroud)

返回

x =

    1.5000
         0
         0
Run Code Online (Sandbox Code Playgroud)

我找到了Class LeastSquares,

public LeastSquares(double[] a, double[] b, int degree)
Run Code Online (Sandbox Code Playgroud)

但是在输入中,A和B都是一维数组,但是,在上面的例子中,A是矩阵,B是数组.

在Class NonNegativeLeastSquares中

public NonNegativeLeastSquares(int M, int N, double a[][],double b[])
Run Code Online (Sandbox Code Playgroud)

A是一个矩阵,B是一个数组,但是该类的描述表明它找到了线性方程组Ax = b的近似解,使得|| Ax - b || 2被最小化,并且x > = 0.这意味着x必须始终为正.

我需要一个类似于NonNegativeLeastSquares的类,但是没有x> = 0约束.有人可以帮帮我吗?
非常感谢.

java least-squares

5
推荐指数
1
解决办法
1万
查看次数

直接椭圆拟合后椭圆系数的非标准化

我试图理解由Fitzgibbon,Pilu和Fisher(由Halir和Flusser改进)开发的直接最小二乘椭圆拟合算法中的归一化和"非标准化"步骤.

编辑:关于理论的更多细节补充.特征值问题是否源于混淆?

简短理论:

椭圆由隐式二阶多项式(一般圆锥方程)表示:

椭圆

哪里:

vector_a
vector_x

要将此一般圆锥约束为椭圆,系数必须满足二次约束:

约束

这相当于:

equivconstraint

其中C是零的矩阵,除了:

C13
C22
C31

设计矩阵D由所有数据点x sub i组成.
DMAT
喜

圆锥和数据点之间距离的最小化可以用广义特征值问题表示(某些理论已被省略):

EIG

表示:

SMAT

我们现在有了这个系统:

分散
equivconstraint

如果我们求解该系统,则对应于单个正特征值的特征向量是正确答案.

代码:

这里的代码片段直接来自作者提供的MATLAB代码:http: //research.microsoft.com/en-us/um/people/awf/ellipse/fitellipse.html

数据输入是一系列(x,y)点.通过减去平均值并除以标准偏差来归一化这些点(在这种情况下,计算为范围的一半).我假设这种规范化允许更好地拟合数据.

% normalize data
% X and Y are the vectors of data points, not normalized
mx = mean(X);
my = mean(Y);
sx = (max(X)-min(X))/2;
sy = (max(Y)-min(Y))/2; 

x = (X-mx)/sx;
y = (Y-my)/sy;

% Build design matrix
D = [ x.*x  x.*y  y.*y  x  y  ones(size(x)) ];

% Build scatter matrix
S = D'*D;   %'

% Build …
Run Code Online (Sandbox Code Playgroud)

matlab normalization linear-algebra least-squares

5
推荐指数
1
解决办法
861
查看次数

L1范数在Python上规范化最小二乘

L1范数正则化问题定义如下:

minimize || A*x - b ||_2^2  + || x ||_1
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,而不是通常的L1 -norm正则化最小二乘问题,我想解决这种形式的问题:

minimize || A*x - b ||_2^2  + || W*G*x ||_1
Run Code Online (Sandbox Code Playgroud)

由于我的表格W和G不具有相同的尺寸,因为AI不能改变我的变量并解决这样的问题

minimize || A*x/(W*B) - b ||_2^2  + || x ||_1
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用互联网上提供的一个解算器.所以我找到了一个解决上述L1平方问题的方程式,如:

minimize || A*x - b ||_2^2  + || x ||_1
minimize    || A*x - b ||_2^2  + e'*u
subject to  -u <= x <= u
Run Code Online (Sandbox Code Playgroud)

所以,据我所知,如果我使用-u <= W G x <= ui可以解决问题.但我无法得到我将完全适应代码的东西.有人可以帮忙吗?代码如下(取自CVXOPT)

from cvxopt import matrix, spdiag, mul, div, sqrt, normal, setseed
from cvxopt import …
Run Code Online (Sandbox Code Playgroud)

python optimization norm least-squares cvxopt

5
推荐指数
1
解决办法
1231
查看次数

如何使用R中的QR分解计算最小二乘估计的方差?

我正在尝试学习QR分解,但无法在不借助传统矩阵计算的情况下弄清楚如何获得beta_hat的方差.我正在练习iris数据集,这是我到目前为止所拥有的:

y<-(iris$Sepal.Length)
x<-(iris$Sepal.Width)
X<-cbind(1,x)
n<-nrow(X)
p<-ncol(X)
qr.X<-qr(X)
b<-(t(qr.Q(qr.X)) %*% y)[1:p]
R<-qr.R(qr.X)
beta<-as.vector(backsolve(R,b))
res<-as.vector(y-X %*% beta)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

regression r linear-regression least-squares qr-decomposition

5
推荐指数
1
解决办法
1572
查看次数