多项式曲线拟合——Logistic为例(附Python代码)
1.概念
多项式曲线拟合,是根据给定的m个点,并不要求这条曲线精确地经过这些点,而是经过这些点曲线y=f(x)的近似曲线y=φ(x)。
2.原理
给定数据点pi(xi,yi),其中i=1,2,…,m。求近似曲线y= φ(x)。并且使得近似曲线与y=f(x)的偏差最小。近似曲线在点pi处的偏差δi= φ(xi) - y,i=1,2,…,m。
3.常见的曲线拟合方法
3.1 使偏差绝对值之和最小
3.2 使偏差绝对值最大的最小
3.3 使偏差平方和最小
4.拟合步骤
4.1 定义拟合多项式:
4.2 各点到这条曲线的距离之和,即上述3.1、3.2、3.3的偏差之和:
4.3 为了求得符合条件的a值,对等式右边求ai偏导数,因而我们得到了:
4.4 将等式左边进行一下化简,然后应该可以得到下面的等式:
4.5 把这些等式表示成矩阵的形式,就可以得到下面的矩阵:
4.6 将这个范德蒙得矩阵化简后可得到:
4.7 之后可以得到系数矩阵,与此同时,我们也就得到了拟合曲线。
5 Python代码实现
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
import sys
import math
import torch
import torchvision
import numpy as np
import pandas as pd
import torch.nn as nn
import torch.nn.functional as F
import matplotlib.pyplot as plt
from torch.autograd import Variable
from sklearn.metrics import r2_score
from