1. 怎么用python将图像边界用最小二乘法拟合成曲线

本文实例讲述了Python基于最小二乘法实现曲线拟合。分享给大家供大家参考,具体如下:

这里不手动实现最小二乘,调用scipy库中实现好的相关优化函数。

考虑如下的含有4个参数的函数式:

希望本文所述对大家Python程序设计有所帮助。

2. Python怎么做最优化

一、概观
scipy中的子包中提供了常用的最优化算法函数实现。我们可以直接调用这些函数完成我们的优化问题。optimize中函数最典型的特点就是能够从函数名称上看出是使用了什么算法。下面optimize包中函数的概览:
1.非线性最优化
fmin -- 简单Nelder-Mead算法
fmin_powell -- 改进型Powell法
fmin_bfgs -- 拟Newton法
fmin_cg -- 非线性共轭梯度法
fmin_ncg -- 线性搜索Newton共轭梯度法
leastsq -- 最小二乘
2.有约束的多元函数问题
fmin_l_bfgs_b ---使用L-BFGS-B算法
fmin_tnc ---梯度信息
fmin_cobyla ---线性逼近
fmin_slsqp ---序列最小二乘法
nnls ---解|| Ax - b ||_2 for x>=0
3.全局优化
anneal ---模拟退火算法
brute --强力法
4.标量函数
fminbound
brent
golden
bracket
5.拟合
curve_fit-- 使用非线性最小二乘法拟合
6.标量函数求根
brentq ---classic Brent (1973)
brenth ---A variation on the classic Brent(1980)ridder ---Ridder是提出这个算法的人名
bisect ---二分法
newton ---牛顿法
fixed_point
7.多维函数求根
fsolve ---通用
broyden1 ---Broyden’s first Jacobian approximation.
broyden2 ---Broyden’s second Jacobian approximationnewton_krylov ---Krylov approximation for inverse Jacobiananderson ---extended Anderson mixing
excitingmixing ---tuned diagonal Jacobian approximationlinearmixing ---scalar Jacobian approximationdiagbroyden ---diagonal Broyden Jacobian approximation8.实用函数
line_search ---找到满足强Wolfe的alpha值
check_grad ---通过和前向有限差分逼近比较检查梯度函数的正确性二、实战非线性最优化
fmin完整的调用形式是:
fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None)不过我们最常使用的就是前两个参数。一个描述优化问题的函数以及初值。后面的那些参数我们也很容易理解。如果您能用到,请自己研究。下面研究一个最简单的问题,来感受这个函数的使用方法:f(x)=x**2-4*x+8,我们知道,这个函数的最小值是4,在x=2的时候取到。
from scipy.optimize import fmin #引入优化包def myfunc(x):
return x**2-4*x+8 #定义函数
x0 = [1.3] #猜一个初值
xopt = fmin(myfunc, x0) #求解
print xopt #打印结果
运行之后,给出的结果是:
Optimization terminated successfully.
Current function value: 4.000000
Iterations: 16
Function evaluations: 32
[ 2.00001953]
程序准确的计算得出了最小值,不过最小值点并不是严格的2,这应该是由二进制机器编码误差造成的。
除了fmin_ncg必须提供梯度信息外,其他几个函数的调用大同小异,完全类似。我们不妨做一个对比:
from scipy.optimize import fmin,fmin_powell,fmin_bfgs,fmin_cgdef myfunc(x):
return x**2-4*x+8
x0 = [1.3]
xopt1 = fmin(myfunc, x0)
print xopt1
print
xopt2 = fmin_powell(myfunc, x0)
print xopt2
print
xopt3 = fmin_bfgs(myfunc, x0)
print xopt3
print
xopt4 = fmin_cg(myfunc,x0)
print xopt4
给出的结果是:
Optimization terminated successfully.
Current function value: 4.000000
Iterations: 16
Function evaluations: 32
[ 2.00001953]
Optimization terminated successfully.
Current function value: 4.000000
Iterations: 2
Function evaluations: 53
1.99999999997
Optimization terminated successfully.
Current function value: 4.000000
Iterations: 2
Function evaluations: 12
Gradient evaluations: 4
[ 2.00000001]
Optimization terminated successfully.
Current function value: 4.000000
Iterations: 2
Function evaluations: 15
Gradient evaluations: 5
[ 2.]
我们可以根据给出的消息直观的判断算法的执行情况。每一种算法数学上的问题,请自己看书学习。个人感觉,如果不是纯研究数学的工作,没必要搞清楚那些推导以及定理云云。不过,必须了解每一种算法的优劣以及能力所及。在使用的时候,不妨多种算法都使用一下,看看效果分别如何,同时,还可以互相印证算法失效的问题。
在from scipy.optimize import fmin之后,就可以使用help(fmin)来查看fmin的帮助信息了。帮助信息中没有例子,但是给出了每一个参数的含义说明,这是调用函数时候的最有价值参考。
有源码研究癖好的,或者当你需要改进这些已经实现的算法的时候,可能需要查看optimize中的每种算法的源代码。在这里:https:/ / github. com/scipy/scipy/blob/master/scipy/optimize/optimize.py聪明的你肯定发现了,顺着这个链接往上一级、再往上一级,你会找到scipy的几乎所有源码!

3. 谁有最小二乘蒙特卡洛方法的美式期权定价python程序代码

function [c,p]=ucoption(S,X,sigma,r,T,M) sig2=sigma^2; srT=sqrt(T); srTa=sigma*srT; c=0; p=0; for i=1:M ST=S*exp((r-0.5*sig2)*T+srTa*randn); c=c+max(ST-X,0); p=p+max(X-ST,0); end c=c/M; p=p/M; [Call,Put] = blsprice(S, X, r, T, ...

4. 如何应用最小二乘法进行实验曲线拟合

看你的数据,50那个点可能测量不准如果用二次拟合是y=-0.0024*x^2+0.2037*x+0.2305一次拟合是y=0.0728*x+1.3215误差自己算一下吧不好意思,有急事

5. Python中+=是什么意思

1、两个值相加,然后返回值给符号左侧的变量

举例如下:

>>> a=1

>>> b=3

>>> a+=b(或者a+=3)

>>> a

4

2、用于字符串连接(变量值带引号,数据类型为字符串)

>>> a='1'

>>> b='2'

>>> a+=b

>>> a

'12'

8、运算符优先级

以下所列优先级顺序按照从低到高优先级的顺序;同行为相同优先级。

Lambda #运算优先级最低

逻辑运算符: or

逻辑运算符: and

逻辑运算符:not

成员测试: in, not in

同一性测试: is, is not

比较: <,<=,>,>=,!=,==

按位或: |

按位异或: ^

按位与: &

移位: << ,>>

加法与减法: + ,-

乘法、除法与取余: *, / ,%

正负号: +x,-x

具有相同优先级的运算符将从左至右的方式依次进行,用小括号()可以改变运算顺序。

参考资料来源:网络-Python

6. python 有没有最小二乘法回归包

线性回归可以让X 的平均数和Y的平均数落在一条直线上。换句话说,用最小二乘法可以让数据中尽可量多的点落在同一条直线上。详情参照高中数学教科书。

7. 如何用python作空间自回归模型

基本形式
线性模型(linear model)就是试图通过属性的线性组合来进行预测的函数,基本形式如下:
f(x)=wTx+b
许多非线性模型可在线性模型的基础上通过引入层结构或者高维映射(比如核方法)来解决。线性模型有很好的解释性。
线性回归
线性回归要求均方误差最小:
(w∗,b∗)=argmin∑i=1m(f(xi)−yi)2
均方误差有很好的几何意义,它对应了常用的欧式距离(Euclidean distance)。基于均方误差最小化来进行模型求解称为最小二乘法(least square method),线性回归中,最小二乘发就是试图找到一条直线,使得所有样本到直线的欧式距离之和最小。
我们把上式写成矩阵的形式:
w∗=argmin(y−Xw)T(y−Xw)
这里我们把b融合到w中,X中最后再加一列1。为了求最小值,我们对w求导并令其为0:
2XT(Xw−y)=0
当XTX为满秩矩阵(full-rank matrix)时是可逆的。此时:
w=(XTX)−1XTy
令xi=(xi,1),可以得到线性回归模型:
f(xi)=xTi(XTX)−1XTy

8. 关於minitab 做偏最小二乘法pls的问题

minitab——回归-偏最小二乘、matlab——plsregress、Python ——from sklearn.cross_decomposition import PLSRegression
这三个PLS的结果全部都不一样
其中matlab与Python结果相差不大,可能是由于matlab使用SIMPLS算法,Python使用NIPALS造成的。
但是minitab的结果相差太大。
SPSS竟然没有PLSR,还要安装扩展包,装完扩展包还要你安装Python2.7。

9. 矩阵参数怎么用最小二乘法拟合

10. 应用最小二乘法对电阻伏安特性曲线进行拟合

你是需要复代码实现还是公制式推导呢?推导的话网络就有,代码的话python:http://blo