最小二乘法(Least Squares Method)是一种用于拟合数据的数学优化方法,广泛用于线性回归。它的目标是通过最小化预测值与实际数据之间的平方误差,找到最优的拟合曲线。下面是用Go语言实现线性回归最小二乘法算法的代码示例:
package main
import (
"fmt"
"math"
)
// 定义一对数据点
type Point struct {
x, y float64
}
// 最小二乘法计算线性回归
func linearRegression(points []Point) (float64, float64) {
var sumX, sumY, sumXY, sumX2 float64
n := float64(len(points))
for _, p := range points {
sumX += p.x
sumY += p.y
sumXY += p.x * p.y
sumX2 += p.x * p.x
}
// 计算斜率 (slope) 和截距 (intercept)
slope := (n*sumXY - sumX*sumY) / (n*sumX2 - sumX*sumX)
intercept := (sumY - slope*sumX) / n
return slope, intercept
}
// 预测函数,给定x值返回y值
func predict(slope, intercept, x float64) float64 {
return slope*x + intercept
}
func main() {
// 定义一组数据点
points := []Point{
{1, 2},
{2, 3},
{3, 5},
{4, 4},
{5, 6},
}
// 调用线性回归函数
slope, intercept := linearRegression(points)
// 输出结果
fmt.Printf("线性回归方程: y = %.2fx + %.2f/n", slope, intercept)
// 预测给定 x = 6 时的 y 值
x := 6.0
y := predict(slope, intercept, x)
fmt.Printf("预测 x = %.2f 时的 y 值为: %.2f/n", x, y)
}
代码说明:
- Point 结构体用于存储数据点的
x
和y
值。 - linearRegression 函数实现最小二乘法算法,用于计算线性回归的斜率和截距。
- predict 函数根据计算的斜率和截距,给定
x
值预测相应的y
值。 main
函数中通过定义一组数据点,调用线性回归函数,得到线性回归方程,并预测给定x
值下的y
。