0

他のすべては正常に動作しますが、leasesq 関数を使用すると、pydev エディターに Undefined variable from import: leastsq what is going on here? というエラーが表示されます。

コードは、次の URL にある MIT の python コスト モデルの timing.pyです。 /readings/python-cost-model/timing.py と leastsq 部分は関数にあります:

def fit2(A,b):
""" Relative error minimizer """
def f(x):
    assert len(x) == len(A[0])
    resids = []
    for i in range(len(A)):
        sum = 0.0
        for j in range(len(A[0])):
            sum += A[i][j]*x[j]
        relative_error = (sum-b[i])/b[i]
        resids.append(relative_error)
    return resids
ans = scipy.optimize.leastsq(f,[0.0]*len(A[0]))
# print "ans:",ans
if len(A[0])==1:
    x = [ans[0]]
else:
    x = ans[0]
resids = sum([r*r for r in f(x)])
return (x,resids,0,0)
4

2 に答える 2

0

LSQ関数に2つのキーワード引数を与えているようですが、3つ必要です。関数、初期値を提供していますが、LSQ が作成される実際の値は提供していませんか?

于 2013-06-03T11:10:01.237 に答える
0

残差の計算をハードコーディングする代わりに、データ値と最小化する関数の差である関数として残差をラップしてみてください。

たとえば、ガウス関数をデータセットに当てはめるだけです。

M = np.array(data) # your data as a Nx2 Matrix of (x, y) data points

initials = [3,2,1] # just some initial guess values

def gaussian(x, p):
    return p[0]*np.exp((-(x-p[1])**2.0)/p[2]**2.0) # definition of the function

def residuals(p, y, x):
    return y - gaussian(x, p) # definition of the residual

cnsts = leastsq(residuals, initials, args=(M[:,1], M[:,0]))[0] # outputs optimized initials

于 2019-09-07T15:40:58.367 に答える