多项式拟合

将利用多输入的线性回归模型实现多项式的拟合。使用最小二乘法进行求解,并可视化拟合的结果。

实值输入: x
真实的函数: sin⁡(2πx)
观测值: t=sin⁡(2πx)+Gaussian Noise

训练集合,其中包括 N 个样本 (x(n),t(n)),其中 n=1,…,N.

import scipy as sp
from scipy.optimize import leastsq
# 目标函数
def real_func(x):
    return np.sin(2*np.pi*x)

# 多项式
def fit_func(p, x):
    f = np.poly1d(p) 
    return f(x)

# 残差
def residuals_func(p, x, y):
    ret = fit_func(p, x) - y
    return ret
# 十个点
x = np.linspace(0, 1, 10)
x_points = np.linspace(0, 1, 1000)
# 加上正态分布噪音的目标函数的值
y_ = real_func(x)
y = [np.random.normal(0, 0.1) + y1 for y1 in y_]


def fitting(M=0):
    """
    M 为多项式的次数
    """
    # 随机初始化多项式参数
    p_init = np.random.rand(M + 1)
    # 最小二乘法
    p_lsq = leastsq(residuals_func, p_init, args=(x, y))
    print('Fitting Parameters:', p_lsq[0])

    # 可视化
  

你可能感兴趣的:(机器学习,python,机器学习,算法)