データセットに合わせてn個の変数の関数を定義しようとしています。関数は次のようになります。配列をパラメータとして持つPythonラムダ関数
私は、ここでは、これまでに私のコードですscipy.optimize.leastsq
を使用して、私のデータセットに合わせて、最適なAIのとBJさんを見つけたいです。それは私にエラーを与えている瞬間
from scipy.optimize import leastsq
import numpy as np
def kellyFunc(a, b, x): #Function to fit.
top = 0
bot = 0
a = [a]
b = [b]
for i in range(len(a)):
top = top + a[i]*x**(2*i)
bot = bot + b[i]*x**(2*i)
return(top/bot)
def fitKelly(x, y, n):
line = lambda params, x : kellyFunc(params[0,:], params[1,:], x) #Lambda Function to minimize
error = lambda params, x, y : line(params, x) - y #Kelly - dataset
paramsInit = [[1 for x in range(n)] for y in range(2)] #define all ai and bi = 1 for initial guess
paramsFin, success = leastsq(error, paramsInit, args = (x,y)) #run leastsq optimization
#line of best fit
xx = np.linspace(x.min(), x.max(), 100)
yy = line(paramsFin, xx)
return(paramsFin, xx, yy)
:
「はIndexError:あまりにも多くの指標」なぜなら私はのparams [0 ,:]とのparams [1で私の最初のラムダ関数を定義した方法の,: ]。
あなたは 'params [0、:]'と 'params [1、:]'で何をしようとしていますか?それは有効なPythonリストスライス構文のようには見えません。 – Ben
これは実際には有効なPythonです。キーはタプルで、タプルの2番目の要素はスライスです。それはNumPyによって広く使用されています。 – kindall
私は訂正しました!説明をありがとう。 – Ben