【统计学习方法by李航】第一章实践——使用最小二乘法拟和曲线


 

一、代码:


Github链接:代码
链接:[ 全文章目录 ]
 
 

二、使用最小二乘法拟和曲线,代码中调用方法介绍:


下面的序号表示是第几个代码块。

(一)

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应该为相同维度的向量
 
 
(完)
 
链接:[ 全文章目录 ]

发布了11 篇原创文章 · 获赞 96 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_42159233/article/details/86744473