标签: data-fitting

用numpy拟合数据

首先让我告诉我得到的可能不是我所期望的,也许你可以在这里帮助我.我有以下数据:

>>> x
array([ 3.08,  3.1 ,  3.12,  3.14,  3.16,  3.18,  3.2 ,  3.22,  3.24,
    3.26,  3.28,  3.3 ,  3.32,  3.34,  3.36,  3.38,  3.4 ,  3.42,
    3.44,  3.46,  3.48,  3.5 ,  3.52,  3.54,  3.56,  3.58,  3.6 ,
    3.62,  3.64,  3.66,  3.68])

>>> y
array([ 0.000857,  0.001182,  0.001619,  0.002113,  0.002702,  0.003351,
    0.004062,  0.004754,  0.00546 ,  0.006183,  0.006816,  0.007362,
    0.007844,  0.008207,  0.008474,  0.008541,  0.008539,  0.008445,
    0.008251,  0.007974,  0.007608,  0.007193,  0.006752,  0.006269,
    0.005799,  0.005302,  0.004822,  0.004339,  0.00391 ,  0.003481,
    0.003095])
Run Code Online (Sandbox Code Playgroud)

现在,我想用4度多项式拟合这些数据.所以我这样做:

>>> coefs …
Run Code Online (Sandbox Code Playgroud)

python regression numpy curve-fitting data-fitting

42
推荐指数
2
解决办法
10万
查看次数

使用python中的optimize.leastsq方法获取拟合参数的标准错误

我有一组数据(位移与时间),我已经使用optimize.leastsq方法拟合了几个方程.我现在希望得到拟合参数的误差值.通过文档查看输出的矩阵是雅可比矩阵,我必须将其乘以残差矩阵以得到我的值.不幸的是,我不是统计学家所以我在术语中有点溺水.

根据我的理解,我需要的是与我的拟合参数一致的协方差矩阵,因此我可以对角元素的平方根来得到拟合参数的标准误差.我有一个模糊的阅读记忆,协方差矩阵无论如何都是来自optimize.leastsq方法的输出.它是否正确?如果不是,您将如何获得残差矩阵乘以输出的雅可比矩阵乘以得到我的协方差矩阵?

任何帮助将不胜感激.我是python的新手,因此如果问题变成一个基本问题就道歉.

拟合代码如下:

fitfunc = lambda p, t: p[0]+p[1]*np.log(t-p[2])+ p[3]*t # Target function'

errfunc = lambda p, t, y: (fitfunc(p, t) - y)# Distance to the target function

p0 = [ 1,1,1,1] # Initial guess for the parameters


  out = optimize.leastsq(errfunc, p0[:], args=(t, disp,), full_output=1)
Run Code Online (Sandbox Code Playgroud)

args t和disp是time和displcement值的数组(基本上只有2列数据).我已经导入了代码顶部所需的所有内容.输出提供的拟合值和矩阵如下:

[  7.53847074e-07   1.84931494e-08   3.25102795e+01  -3.28882437e-11]

[[  3.29326356e-01  -7.43957919e-02   8.02246944e+07   2.64522183e-04]
 [ -7.43957919e-02   1.70872763e-02  -1.76477289e+07  -6.35825520e-05]
 [  8.02246944e+07  -1.76477289e+07   2.51023348e+16   5.87705672e+04]
 [  2.64522183e-04  -6.35825520e-05   5.87705672e+04   2.70249488e-07]]
Run Code Online (Sandbox Code Playgroud)

我怀疑此刻适合有点怀疑.当我可以解决错误时,这将得到确认.

python scipy data-fitting

34
推荐指数
2
解决办法
5万
查看次数

将闭合曲线拟合到一组点

我有一组pts形成循环的点,它看起来像这样:

在此输入图像描述

这有点类似于31243002,但是我不想在点对之间放置点,而是想在点之间插入一条平滑的曲线(坐标在问题的末尾给出),所以我尝试了类似于Interpolation的scipy文档.:

values = pts
tck = interpolate.splrep(values[:,0], values[:,1], s=1)
xnew = np.arange(2,7,0.01)
ynew = interpolate.splev(xnew, tck, der=0)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

ValueError:输入数据错误

有没有办法找到这样的合适?

点数的坐标:

pts = array([[ 6.55525 ,  3.05472 ],
   [ 6.17284 ,  2.802609],
   [ 5.53946 ,  2.649209],
   [ 4.93053 ,  2.444444],
   [ 4.32544 ,  2.318749],
   [ 3.90982 ,  2.2875  ],
   [ 3.51294 ,  2.221875],
   [ 3.09107 ,  2.29375 ],
   [ 2.64013 ,  2.4375  ],
   [ 2.275444,  2.653124],
   [ 2.137945,  3.26562 ],
   [ 2.15982 …
Run Code Online (Sandbox Code Playgroud)

python numpy curve-fitting scipy data-fitting

30
推荐指数
4
解决办法
1万
查看次数

使用scipy.optimize.curve_fit - ValueError和minpack.error拟合2D高斯函数

我打算将2D高斯函数拟合到显示激光束的图像,以获得其参数FWHM和位置.到目前为止,我试图了解如何在Python中定义2D高斯函数以及如何将x和y变量传递给它.

我写了一个小脚本来定义该函数,绘制它,为它添加一些噪声,然后尝试使用它curve_fit.除了我尝试将模型函数适合噪声数据的最后一步之外,一切似乎都有效.这是我的代码:

import scipy.optimize as opt
import numpy as np
import pylab as plt


#define model function and pass independant variables x and y as a list
def twoD_Gaussian((x,y), amplitude, xo, yo, sigma_x, sigma_y, theta, offset):
    xo = float(xo)
    yo = float(yo)    
    a = (np.cos(theta)**2)/(2*sigma_x**2) + (np.sin(theta)**2)/(2*sigma_y**2)
    b = -(np.sin(2*theta))/(4*sigma_x**2) + (np.sin(2*theta))/(4*sigma_y**2)
    c = (np.sin(theta)**2)/(2*sigma_x**2) + (np.cos(theta)**2)/(2*sigma_y**2)
    return offset + amplitude*np.exp( - (a*((x-xo)**2) + 2*b*(x-xo)*(y-yo) + c*((y-yo)**2)))

# Create x and y indices
x = np.linspace(0, …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy data-fitting

23
推荐指数
3
解决办法
4万
查看次数

如何找到真实数据的概率分布和参数?(Python 3)

我有一个数据集sklearn,我绘制了load_diabetes.target数据的分布(即load_diabetes.data用于预测的回归值).

我使用它是因为它具有最少数量的回归变量/属性sklearn.datasets.

使用Python 3,我如何获得最接近类似的分布类型和分布参数?

我所知道的target价值都是积极的和倾斜的(假定倾斜/右倾斜)...Python中是否有一种方法可以提供一些分布,然后最适合target数据/向量?或者,根据给出的数据实际建议拟合?对于那些具有理论统计知识但很少将其应用于"真实数据"的人来说,这将是非常有用的.

奖金 使用这种方法来确定你的后验分布对"真实数据"的影响是否合理?如果不是,为什么不呢?

from sklearn.datasets import load_diabetes
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import pandas as pd

#Get Data
data = load_diabetes()
X, y_ = data.data, data.target

#Organize Data
SR_y = pd.Series(y_, name="y_ (Target Vector Distribution)")

#Plot Data
fig, ax = plt.subplots()
sns.distplot(SR_y, bins=25, color="g", ax=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python statistics distribution machine-learning data-fitting

22
推荐指数
4
解决办法
2万
查看次数

为什么scipy.optimize.curve_fit不适合数据?

我一直试图使用scipy.optimize.curve_fit在一段时间内对某些数据进行指数拟合,但我遇到了真正的困难.我真的看不出任何理由为什么这不起作用,但它只会产生一条直线,不明白为什么!

任何帮助将非常感激

from __future__ import division
import numpy
from scipy.optimize import curve_fit
import matplotlib.pyplot as pyplot

def func(x,a,b,c):
   return a*numpy.exp(-b*x)-c


yData = numpy.load('yData.npy')
xData = numpy.load('xData.npy')

trialX = numpy.linspace(xData[0],xData[-1],1000)

# Fit a polynomial 
fitted = numpy.polyfit(xData, yData, 10)[::-1]
y = numpy.zeros(len(trailX))
for i in range(len(fitted)):
   y += fitted[i]*trialX**i

# Fit an exponential
popt, pcov = curve_fit(func, xData, yData)
yEXP = func(trialX, *popt)

pyplot.figure()
pyplot.plot(xData, yData, label='Data', marker='o')
pyplot.plot(trialX, yEXP, 'r-',ls='--', label="Exp Fit")
pyplot.plot(trialX,   y, label = '10 Deg Poly')
pyplot.legend() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib curve-fitting scipy data-fitting

21
推荐指数
2
解决办法
4万
查看次数

Keras Sequential fit_generator参数列表中validation_steps的含义

我在Python中使用带有Tensorflow后端的Keras.更精确的tensorflow 1.2.1及其内置的contrib.keras lib.

我想使用fit_generator一个Sequential模型对象,但我对作为方法参数传递的内容感到困惑.

通过阅读这里的文档,我得到了以下信息:

  • generator:python训练数据批量生成器; 无休止地循环其训练数据
  • validation_data: - 在我的例子中 - 一个python验证数据批处理生成器; doc没有提到对其验证数据的无限循环
  • steps_per_epoch:number of training batches = uniqueTrainingData / batchSize
  • 验证步骤:???; = uniqueValidationData /批量大小???
  • use_multiprocessing:boolean; 不传递不可选择的参数???
  • workers:最大使用进程数

如上所示??? 我真的不知道validation_steps是什么意思.我知道上面链接的doc(Number of steps to yield from validation generator at the end of every epoch)的定义,但这只会混淆我在给定的上下文中.从文档中我知道validation_data生成器必须生成数据,在表单中标记元组(inputs, targets).与此相反,上述陈述表明在每个时期结束时必须存在多个"从验证生成器产生的步骤",在这种情况下,这意味着在每个训练时期之后将产生多个验证批次.

关于的问题validation_steps:

  • 它真的有那种方式吗?如果是这样:为什么?我认为在每个时期之后,一个验证批次(理想情况下以前没有使用过)用于验证,以确保培训得到验证,而无需"训练"模型以在已使用的验证集上执行得更好.
  • 在上一个问题的背景下:为什么建议的验证步骤数量uniqueValidationData / batches不是uniqueValidationData / epochs?例如,100个时期的100个验证批次而不是x验证批次,其中x可能小于或大于指定的时期数量,这不是更好吗?或者:如果你的验证批次比epoches的数量少得多,那么模型是否在没有验证剩余时期的情况下进行训练,或者验证集是否会重复使用/重新洗牌+重复使用?
  • 重要的是培训和验证批次具有相同的批次大小(红利trainingDataCount和validationDataCount的共享除数)?

关于的其他问题use_multiprocessing …

parameters generator data-fitting keras

21
推荐指数
1
解决办法
2万
查看次数

如何权衡散点图中的点?

所以,我在Python中的polyfit(numpy.polynomial.polynomial.polyfit)函数中查找了有关weights参数的信息,看起来它与与各个点相关的错误有关.(如何在numpy.polyfit中包含测量误差)

但是,我想要做的与错误无关,而是权重.我有一个numpy阵列形式的图像,表明探测器中沉积的电荷量.我将该图像转换为散点图,然后进行拟合.但我希望这适合给予更多电荷沉积的点更多的权重,而不是那些电荷更少的点.这是权重参数的用途吗?

这是一个示例图像:淋浴的形象 这是我的代码:

def get_best_fit(image_array, fixedX, fixedY):
    weights = np.array(image_array)
    x = np.where(weights>0)[1]
    y = np.where(weights>0)[0]
    size = len(image_array) * len(image_array[0])
    y = np.zeros((len(image_array), len(image_array[0])))
    for i in range(len(np.where(weights>0)[0])):
        y[np.where(weights>0)[0][i]][np.where(weights>0)[1][i]] = np.where(weights>0)[0][i]
    y = y.reshape(size)
    x = np.array(range(len(image_array)) * len(image_array[0]))
    weights = weights.reshape((size))
    b, m = polyfit(x, y, 1, w=weights)
    angle = math.atan(m) * 180/math.pi
    return b, m, angle
Run Code Online (Sandbox Code Playgroud)

让我向您解释一下代码:

第一行将指定的电荷分配给称为权重的变量.接下来的两行得到沉积电荷> 0的点,因此存在一些电荷以捕获散射图的坐标.然后我得到整个图像的大小,以便稍后转换为一维数组进行绘图.然后我去通过图像,并试图让那里的一些电荷堆积的点的坐标(记住,电荷时,存储在变量weights).然后我重塑y坐标以获得一维数组,并从图像中获取所有相应y坐标的x坐标,然后将权重的形状也改变为一维.

编辑:如果有使用该np.linalg.lstsq函数的方法,这将是理想的,因为我也试图通过绘图的顶点.我可以重新定位绘图,使顶点为零,然后使用np.linalg.lstsq,但这不允许我使用权重.

python numpy data-fitting

14
推荐指数
2
解决办法
756
查看次数

SciPy LeastSq Fit Fit of Fit Estimator

我有一个数据表面,我使用SciPy的leastsq功能.

我想对leastsq退货后的合身质量有一些估计.我希望这可以作为函数的返回包含在内,但如果是这样的话,它似乎没有明确记录.

是否有这样的回报,或者,除非,我可以传递我的数据和返回的参数值和拟合函数的某些函数将给出我对拟合质量的估计(R ^ 2或某些此类)?

谢谢!

python scipy data-fitting

13
推荐指数
1
解决办法
1万
查看次数

用积分函数拟合数据

当使用curve_fitfrom scipy.optimize来拟合python中的某些数据时,首先定义拟合函数(例如二阶多项式),如下所示:

  1. def f(x, a, b): return a*x**2+b*x
  2. 然后进行拟合 popt, pcov = curve_fit(f,x,y)

但现在的问题是,如果函数包含一个整数(或一个离散的和),如何在第1点定义函数,例如:

在此输入图像描述

实验数据仍然给出了x和f(x),所以第2点就像我想象的一样,我可以在python中定义f(x).顺便说一下,我忘了说假设g(t)在这里有一个众所周知的形式,并且包含拟合参数,即在多项式例子中给出的像a和b这样的参数.任何帮助深表感谢.问题实际上应该是通用的,而帖子中使用的函数只是随机的例子.

python integral scipy data-fitting

11
推荐指数
1
解决办法
2837
查看次数