用最小二乘法进行数据拟合
以下是引用父子身高数据进行的数据拟合

# 最小二乘法 数据拟合
from sympy import symbols, diff, solve
import numpy as np

# 数据集 D
X = np.array([1.51, 1.64, 1.6, 1.73, 1.82, 1.87])
y = np.array([1.63, 1.7, 1.71, 1.72, 1.76, 1.86])

# 构造经验误差函数
w, b = symbols('w b', real=True)
RDh = 0
for (xi, yi) in zip(X, y):
	RDh += (yi - (xi*w + b))**2
RDh *= 1/len(X)

# 对 w 和 b 求偏导
eRDhw = diff(RDh, w)
eRDhb = diff(RDh, b)

# 求解方程组
ans = solve((eRDhw, eRDhb), (w, b))
print('使得经验误差函数 RD(h) 取最小值的参数为:{}'.format(ans))
# 拟合的方程为 y=0.514133333333440 x+ 0.858543999999819
最终拟合的方程为  y=0.514133333333440 x+ 0.858543999999819

By liu

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注