go实现最小二乘函数

最小二乘法

最小二乘法(又称最小平方法)是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。这种方法可以用于求得目标函数的最优值,也可以用于曲线拟合,解决回归问题。利用最小二乘法,可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

最小二乘法的作用主要体现在以下几个方面:

拟合曲线:最小二乘法是解决曲线拟合问题最常用的方法。在已知一组数据点的情况下,可以利用最小二乘法求得一条最能代表这些数据的曲线。
求解未知量:最小二乘法可以用于求解未知量,使得误差值最小。例如,在回归分析中,可以利用最小二乘法求得回归直线的斜率和截距,使得预测值与实际值之间的误差平方和最小。
最小二乘法成立的前提条件是假设系统中无系统误差,误差均为偶然误差,并且假设误差符合正态分布,即整个系统最后的误差均值为零。

代码

package main

import (
	"gonum.org/v1/gonum/mat"
)

// 最小二乘法函数
func leastSquares(X, Y *mat.Dense) (mat.Dense, error) {
	var b mat.Dense

	XT := X.T()
	var XTX mat.Dense
	XTX.Mul(XT, X)

	var invXTX mat.Dense
	err := invXTX.Inverse(&XTX)
	if err != nil {
		return b, err
	}

	var XTY mat.Dense
	XTY.Mul(XT, Y)

	b.Mul(&invXTX, &XTY)

	return b, nil
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值