代码拉取完成,页面将自动刷新
package linear
import (
"gitee.com/quant1x/gox/logger"
)
// LeastSquares 最简单的最小二乘法
func LeastSquares(x []float64, y []float64) (slope float64, intercept float64) {
// x是横坐标数据,y是纵坐标数据
// a是斜率,b是截距
xi := float64(0)
x2 := float64(0)
yi := float64(0)
xy := float64(0)
if len(x) != len(y) {
logger.Debugf("最小二乘时,两数组长度不一致!")
} else {
xLen := len(x)
length := float64(xLen)
window := 5
if xLen <= window {
window = xLen
}
for i := xLen - window; i < xLen; i++ {
xi += x[i]
x2 += x[i] * x[i]
yi += y[i]
xy += x[i] * y[i]
}
slope = (yi*xi - xy*length) / (xi*xi - x2*length)
intercept = (yi*x2 - xy*xi) / (x2*length - xi*xi)
}
return
}
func Predict(y, slope, intercept float64) float64 {
return y*slope + intercept
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。