第一章实践
- 一、代码:
- 二、使用最小二乘法拟和曲线,代码中调用方法介绍:
- (一)
- (二)
- (三)
- 1、x = np.linspace(0, 1, 10)【第2行】
- 2、y = [np.random.normal(0, 0.1)+y1 for y1 in y_] 【第6行】
- 3、p_lsq = leastsq(residuals_func, p_init, args=(x, y)) 【第15行】
- 4、print('Fitting Parameters:', p_lsq[0]) 【第16行】
- 5、matplotlib.pyplot.plot() 【第19、20、21行】
- 6、plt.legend()【第22行】
- (四)——(六)略
- 三、正则化
一、代码:
二、使用最小二乘法拟和曲线,代码中调用方法介绍:
下面的序号表示是第几个代码块。
(一)
1、%matplotlib inline【第5行】
调用数据可视化(Jupyter Notebook或jupyter qtconsole)(直接在python里面运行会报错)
(二)
1、return np.sin(2np.pix) 【第3行】
返回sin值
2、f = np.poly1d( p ) 【第7行】
numpy.poly1d([1,2,3]) 生成 1x2+2x1+3x0
(三)
1、x = np.linspace(0, 1, 10)【第2行】
从0到1(含),等间隔的生成十个数。
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
从start到stop生成等间隔的num个数。
endpoint:是否包含stop的值。
restep:步进/间隔数。
2、y = [np.random.normal(0, 0.1)+y1 for y1 in y_] 【第6行】
numpy.random.normal(loc=0.0, scale=1.0, size=None)
按照正态分布以0为对称轴,0.1为标准差
即loc是μ,scale是δ
这一句的意思是,按照正态分布生成随机数加上y值,用来加上噪音。(这样可以保证样本点不会偏离原来的点太多)
3、p_lsq = leastsq(residuals_func, p_init, args=(x, y)) 【第15行】
leastsq(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=0.0, factor=100, diag=None, warning=True)
一般我们只要指定前三个参数就可以了:
func 是我们自己定义的一个计算误差的函数(损失函数、经验风险、经验损失),
x0 是计算的初始参数值(有几个参数)。
args 是指定func的其他参数(出了函数外的),这里的其他参数就是x和y。
4、print(‘Fitting Parameters:’, p_lsq[0]) 【第16行】
这里的p_lsq[0]里面的是算出来的参数列表
5、matplotlib.pyplot.plot() 【第19、20、21行】
plt.plot(x_points, real_func(x_points), label=‘real’)
plt.plot(x_points, fit_func(p_lsq[0], x_points), label=‘fitted curve’)
plt.plot(x, y, ‘bo’, label=‘noise’)
一般:plot(x, y),遍历x,y并打印
[ 链接:参数详解 ]
6、plt.legend()【第22行】
默认在右上角显示标示(标示就是上面的label)
[ 链接:具体的位置参数 ]
(四)——(六)略
三、正则化
(七)ret=np.append(ret,np.sqrt(0.5*regularization*np.square( p))) 【第5行】
numpu.append(arr,values,axis=None)
将values插入到目标arr的最后。
注意,这里values跟arr应该为相同维度的向量
(完)
链接:[ 全文章目录 ]