import
运行结果:
100
p
coeff
运行结果:
[4.00355516 1.55927961]
p
# 还可以用 poly1d 生成一个以传入的 coeff 为参数的多项式函数:
x
from
运行结果:
[
X
运行结果:
array([[0.05050505, 1. ],
[0.1010101 , 1. ],
[0.15151515, 1. ],
[0.2020202 , 1. ]])
C
运行结果:
sum squared residual = 12.986
rank of the X matrix = 2
singular values of X = [30.23732043 4.82146667]
from
运行结果:
(0.5028457518511993, 0.024071946424871093)
p
运行结果:
R-value = 0.912
p-value (probability there is no correlation) = 1.254e-39
Root mean squared error of the fit = 0.151
from
from
# 定义误差函数,将要优化的参数放在前面:
运行结果:
[3.32130888 1.89218577 1.28617493 0.68515905]
1
# 更高级的做法:不需要定义误差函数,直接传入function作为参数。
运行结果:
[3.32130886 1.89218577 1.28617493 0.68515906]
[[ 0.13806975 -0.04121882 0.01507384 -0.04721358]
[-0.04121882 0.01262612 -0.00431895 0.01352772]
[ 0.01507384 -0.00431895 0.00224488 -0.00703102]
[-0.04721358 0.01352772 -0.00703102 0.02227572]]
p
print
运行结果:
normalized relative errors for each parameter
a b f phi
[0.11187679 0.05938424 0.03683802 0.21783342]
① Matplotlib库 是 Python 的绘图库。
② 它常与 NumPy 一起使用。
① matplotlib的pyplot子库提供了绘图API,方便用户快速绘制2D图表。
② matplotlib.pyplot是函数的集合,每一个函数都对图像作了修改,比如其中有创建图形,在图像上创建画图区域,在画图区域上画线,在线上标注等。
① polyfit()函数是多项式拟合函数,polyfit(x, noise_y, 1)表示拟合一阶多项式,即线性拟合函数。
② 即拟合出一阶多项式 y=a1x+a0,返回两个系数 [a1,a0]。
① np.poly1d()函数有两个入口参数。
② 若没有第二个参数,则生成一个多项式。
③ 例如:
p = np.poly1d([2,3,5,7])
print(p)==>>2x3+3x2+5x+7
④ 若第二个参数为True,则表示把数组中的值作为根,然后反推多项式。
⑤ 例如:
q = np.poly1d([2,3,5],True)
print(q)===>>(x-2)(x-3)(x-5)=x3-10x2+31x-30
① 有了%matplotlib inline 就可以省掉plt.show()了。
② 如果不加这一句的话,我们在画图结束之后需要加上plt.show()才可以显示图像。
① randn函数返回一组样本,具有标准正态分布。
② 标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。
① axis是用来设置具体某一个坐标轴的属性的。
② xmin, xmax, ymin, ymax = axis([xmin, xmax, ymin, ymax])
① 当M个点具有线性关系时,我们可以使用一个 N-1 阶的多项式拟合这 M 个点,关系式为:
② 即:
③ 要得到C,可以使用scipy.linalg.lstsq求最小二乘解。
① numpy.linalg模块包含线性代数的函数,使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
① Scipy的stats模块包含了多种概率分布的随机变量,随机变量分为连续的和离散的两种。
① lstsq()函数表示最小二乘法,它有四个返回值,第一个返回值的第一个元素为多项式的系数,第二个返回值为平方和残差,第三个返回值句矩阵X的秩,第四个返回值为矩阵X的奇异值。
① linregress(x,y)函数就是线性回归的函数。
② linregress(x,y)函数有五个返回值,第一个返回值slope为斜率,第二个返回值intercept为截距,第三个返回值r_value为相关系数,第四个返回值p-value为没有相关性的可能性,第五个返回值stderr为拟合的均方根误差。
① np.hstack()函数使得数组沿着水平方向堆叠起来。
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
res = np.hstack((arr1, arr2))
print(res)
输出结果:
[1 2 3 4 5 6]
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
arr2 = np.array([[7, 8], [9, 0], [0, 1]])
res = np.hstack((arr1, arr2))
print(res)
输出结果:
[[1 2 7 8]
[3 4 9 0]
[5 6 0 1]]
① x[:,np.newaxis]使得一行元素变成一列元素了。
① np.exp()函数返回e(自然对数的底)的幂次方。
① norm函数 可以实现正态分布,norm.rvs()函数通过loc和scale参数可以指定随机变量的偏移和缩放参数,这里对应的是正态分布的期望和标准差。
② size得到随机数数组的形状参数。(也可以使用np.random.normal(loc=0.0, scale=1.0, size=None))
① 而curve_fit()函数是将模型函数适用于噪声数据的最后一步,它的主要功能就是计算出参数。
② curve_fit()函数第一个返回的是函数的参数,第二个返回值为各个参数的协方差矩阵,协方差矩阵的对角线为各个参数的方差。
帮忙点个赞,谢谢!
整理不易,给点鼓励,谢谢!
我整理的所有笔记!( 专栏里有 )