MrR*_*ROY 4 python numpy scipy
我已经安装了Numpy和SciPy,但我不太了解他们的文档polyfit.
对于exmpale,这是我的三个数据样本:
[-0.042780748663101636, -0.0040771571786609945, -0.00506567946276074]
[0.042780748663101636, -0.0044771571786609945, -0.10506567946276074]
[0.542780748663101636, -0.005771571786609945, 0.30506567946276074]
[-0.342780748663101636, -0.0304077157178660995, 0.90506567946276074]
Run Code Online (Sandbox Code Playgroud)
前两列是样本特征,第三列是输出,我的目标是获得一个可以采用两个参数(前两列)并返回其预测(输出)的函数.
任何简单的例子?
======================编辑======================
请注意,我需要适合的东西curve,不仅仅是直线.多项式应该是这样的(n = 3):
a*x1^3 + b*x2^2 + c*x3 + d = y
Run Code Online (Sandbox Code Playgroud)
不:
a*x1 + b*x2 + c*x3 + d = y
Run Code Online (Sandbox Code Playgroud)
x1,x2,x3是一个样本的特征,y是输出
尝试类似的东西
编辑:添加了一个示例函数,该函数使用线性回归结果来估算输出.
import numpy as np
data =np.array(
[[-0.042780748663101636, -0.0040771571786609945, -0.00506567946276074],
[0.042780748663101636, -0.0044771571786609945, -0.10506567946276074],
[0.542780748663101636, -0.005771571786609945, 0.30506567946276074],
[-0.342780748663101636, -0.0304077157178660995, 0.90506567946276074]])
coefficient = data[:,0:2]
dependent = data[:,-1]
x,residuals,rank,s = np.linalg.lstsq(coefficient,dependent)
def f(x,u,v):
return u*x[0] + v*x[1]
for datum in data:
print f(x,*datum[0:2])
Run Code Online (Sandbox Code Playgroud)
这使
>>> x
array([ 0.16991146, -30.18923739])
>>> residuals
array([ 0.07941146])
>>> rank
2
>>> s
array([ 0.64490113, 0.02944663])
Run Code Online (Sandbox Code Playgroud)
用你的系数创建的函数给出了
0.115817326583
0.142430900298
0.266464019171
0.859743371665
Run Code Online (Sandbox Code Playgroud)
更多信息可以在我发布的评论文档中找到.
编辑2:将数据拟合到任意模型.
编辑3:使我的模型成为易于理解的功能.
编辑4:使代码更容易读取/更改模型到二次拟合,但您应该能够阅读此代码并知道如何使其最小化您现在想要的任何残差.
人为的例子:
import numpy as np
from scipy.optimize import leastsq
data =np.array(
[[-0.042780748663101636, -0.0040771571786609945, -0.00506567946276074],
[0.042780748663101636, -0.0044771571786609945, -0.10506567946276074],
[0.542780748663101636, -0.005771571786609945, 0.30506567946276074],
[-0.342780748663101636, -0.0304077157178660995, 0.90506567946276074]])
coefficient = data[:,0:2]
dependent = data[:,-1]
def model(p,x):
a,b,c = p
u = x[:,0]
v = x[:,1]
return (a*u**2 + b*v + c)
def residuals(p, y, x):
a,b,c = p
err = y - model(p,x)
return err
p0 = np.array([2,3,4]) #some initial guess
p = leastsq(residuals, p0, args=(dependent, coefficient))[0]
def f(p,x):
return p[0]*x[0] + p[1]*x[1] + p[2]
for x in coefficient:
print f(p,x)
Run Code Online (Sandbox Code Playgroud)
给
-0.108798280153
-0.00470479385807
0.570237823475
0.413016072653
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6518 次 |
| 最近记录: |