网站最近更新

© 乙回庐 2019. All rights reserved.

Scipy数值分析(二):拟合

昨天发了一篇Scipy如何进行逼近,里面还没例子,以后有机会补几个。今天来看看拟合,不过再说拟合以前要先说三句话:

首先,第一点拟合和插值是不一样的。

其次,高维的逼近比一维复杂很多,Scipy中基本只有一维和二维的逼近,再高维的就另请高明吧。

最后,拟合可以看做一种优化,根据不同的误差函数可以定义不同的拟合,其中最常见的是最小二乘拟合,这也是Scipy中唯一实现的一种拟合。如果你需要比如最小一范数拟合你可能需要直接用优化模块实现,或者使用其他的优化函数库。

下面我们来看看Scipy中这个唯一的拟合函数吧!

scipy.optimize.curve_fit(f, xdata, ydata, p0=None, sigma=None, absolute_sigma=False, check_finite=True, **kw)

这个函数名简直直白到没朋友吧,使用方法也是直白得很,对于简单地函数可以使用lambda算子,比如线性函数可以lambda (x,k,b):k*x+b。当然,直接定义函数也是可以的,而且这个函数没有要求必须是显式函数,也可以是一段仿真代码。此处应该有几个例子,不过今天就不给了,继续挖坑!

对了,这个函数的定义格式必须是自变量是第一个参数,其他参数是函数的剩余变量。

当然,Numpy中还有一个polyfit可以进行多项式拟合,使用方法和Matlab里的同名函数是一样的,不过不推荐啦!为什么呢,因为如果你需要大量的拟合、回归、聚类,那么你需要的是一个机器学习的库,那么你正确的默认打开方式应该是sklearn.这个大坑我就不挖了,网上sklearn的教程应该不少。当然做统计嘛,首推R,那才是统计方面内容的正确打开方式,就一个lm函数,R也能做到极致。就为这点必须给R点个赞!说到R呢,以前也提过可重现研究的前沿技术就是R里实现rmarkdown。如果需要自动生成报告的读者不妨去看一下rmarkdown,主要的实现在一个叫做knitr的库。Python下现在有一个超级不完整,功能弱爆了的port,叫做knitpy,大家目前还不用去关注,等到它成熟得差不多了,我再向大家推荐!咦,貌似跑题有点远了,今天就说到这里吧,下次再见喽!

此文文长924字,君不评论一二?
亲,给点评论吧!

展开本分类索引