[Python] Cannot cast array data from dtype('O') to dtype('float64') according to the rule 'safe'
現象
spicy.optimizeのleastsqで最小二乗法でフィッティングをしようとしたらタイトルのエラーが発生。
from scipy import optimize
import numpy as np
def internalFunc1(x, plist):
a=plist[0]
b=plist[1]
return a*x**2+b
def myFunc(x, param):
a=param[0]
b=param[1]
return a*x+internalFunc1(x, b)
def fit(param, x, y):
def residual(param, x, y):
return y-myFunc(x, param)
result=optimize.leastsq(residual, param, args=(x, y))
return result
x=np.linspace(0, 10, 101)
y=np.random.randint(0, 10, 101)
param0=[1, [2, 3]]
fit(param0, x, y)
TypeError: Cannot cast array data from dtype('O') to dtype('float64') according to the rule 'safe'
原因
leastsqのパラメータの中にlistが入っていること。以下のように修正すればエラーは出なくなった。
def myFunc(x, param):
a=param[0]
b=param[1:]
return a*x+internalFunc1(x, b)
x=np.linspace(0, 10, 101)
y=np.random.randint(0, 10, 101)
param0=[1, 2, 3]
fit(param0, x, y)
最新記事
すべて表示概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Comentarios