gpt4 book ai didi

c - OpenCV 中的加权线性最小二乘法

转载 作者:太空狗 更新时间:2023-10-29 17:24:24 27 4
gpt4 key购买 nike

OpenCV 的 cvSolve 可以解决这样的线性最小二乘问题:

// model: y = a1*x1 + a2*x2 + a3
CvMat *y = cvCreateMat(N, 1, CV_64FC1);
CvMat *X = cvCreateMat(N, 3, CV_64FC1);
CvMat *coeff = cvCreateMat(3, 1, CV_64FC1);

// fill vector y and matrix X
for (int i=0; i<N; ++i)
{
cvmSet(y, i, 0, my_y_value(i) );
cvmSet(X, i, 0, my_x1_value(i) );
cvmSet(X, i, 1, my_x2_value(i) );
cvmSet(X, i, 2, 1 );
}

cvSolve(X, y, coeff, CV_SVD);
// now coeff contains a1, a2, a3

但是,我想对我的数据点应用不同的权重。如何应用权重?

最佳答案

我发现其实没那么难:

for (int i=0; i<N; ++i)
{
double w = weight(i);

cvmSet(y, i, 0, w * my_y_value(i) );
cvmSet(X, i, 0, w * my_x1_value(i) );
cvmSet(X, i, 1, w * my_x2_value(i) );
cvmSet(X, i, 2, w );
}

cvSolve(X, y, coeff, CV_SVD);

该片段简单地将线性方程的左侧和右侧都与权重 w 相乘。样本 i 的误差项有效地乘以 w²。

关于c - OpenCV 中的加权线性最小二乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14733315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com