Python SciPy Leastsq实施问题

Python SciPy Leastsq实施问题,python,numpy,scipy,least-squares,Python,Numpy,Scipy,Least Squares,我使用下面的代码来实现我的模型与一些实验数据的最小平方拟合。 程序一直在运行,我的实现似乎有问题,但我无法解决。两个函数simulatefunc和fit中的Print语句表明,精确地说,它们被调用了几次9,但之后没有响应 谁能告诉我我的实现有什么问题吗?该程序运行良好,没有使用leastsq函数,我可以通过调用带有一些参数的fit函数获得返回给我的残差 示例数据点:我的文件中总共有100个 0.944444444,2.838888889,5.711111111,2.962962963,0.481

我使用下面的代码来实现我的模型与一些实验数据的最小平方拟合。 程序一直在运行,我的实现似乎有问题,但我无法解决。两个函数simulatefunc和fit中的Print语句表明,精确地说,它们被调用了几次9,但之后没有响应

谁能告诉我我的实现有什么问题吗?该程序运行良好,没有使用leastsq函数,我可以通过调用带有一些参数的fit函数获得返回给我的残差

示例数据点:我的文件中总共有100个 0.944444444,2.838888889,5.711111111,2.962962963,0.481481481 0.82222222,2.67222222,5.8555556,3.259259259,0.351852

#!/usr/bin/python

#Simulate egg-laying in hermaphrodites

import math
import csv
import numpy as np
from scipy.optimize import leastsq

f = open('dataPointsCSV.csv')
csv_f = csv.reader(f)

for row in csv_f : 
    ####### My Model #######
    def simulateFunc(parms) : 
        oocytes = 0 
        sperm = 300
        eggs = []
        total_t = 0
        delta_t = 0.1
        bin_size = 4

        k_o = parms[0]
        k_c = parms[1]
        k_f = parms[2]
        k_s = parms[3]

        while(sperm > 1) : 
            oocytes += delta_t*(k_o-k_c*oocytes)
            new_eggs = delta_t*min(k_f*oocytes,k_s*sperm)
            sperm -= new_eggs
            oocytes -= new_eggs
            index = int(total_t/bin_size)

            if(len(eggs)<=index) :
                eggs.append(new_eggs)
            else :
                eggs[index] += new_eggs

            total_t += delta_t

        for i in range(0,len(eggs)) :
            eggs[i] = eggs[i]/bin_size

        return eggs
    ######## Returns the residuals #########
    def fit(para) :
        newEggs = []
        modelEggs = simulateFunc(para)
        exp = np.array(row)
        expEggs = exp.astype(np.float)

        ########## Get the required points for calculating the residuals from the model data ############
        for i in range(0,len(modelEggs)):           
            if(i == 2 or i == 4 or i == 9 or i == 15 or i == 22):
                newEggs.append(modelEggs[i])

        newEggs = np.array(newEggs)
        res = expEggs - newEggs
        return res

    ######## Parameter Initializations ##########
    parameters = [6,-.02,.0266,.0625]

    x, cov, infodict, mesg, ier = leastsq(fit,parameters, full_output = True, epsfcn = 1.0e-2)
    print x

输入中总是同一行导致程序停止吗?它不停止,只是继续运行,不产生输出。它本身保留在第一行。我添加了epsfcn=1.0e-4/1.0e-5/1.0e-3作为leastsq函数的附加参数,并且在再次卡住之前,它会产生一些输出,它给了我一些警告,比如:RuntimeWarning:在double_scalars Occomates+=delta_t*k_o-k_c*Occomates RuntimeWarning:在double_scalars Occomates中遇到溢出-=new_Eggs您需要修复部分代码显示:在点处缩进不正确,fit函数被切分为两段,这使得它看起来好像不会返回。也许你可以复制粘贴你所有的数据,100行看起来不会太多;然后将您的代码转换为一个我们可以尝试的自包含程序。