Python での最適化について学習しようとしているので、fmin 関数をテストするコードをいくつか書きました。
ただし、次のエラーが表示され続けます。
ValueError: operands could not be broadcast together with shapes (1,2) (100,)
問題は私の議論の次元に関係していると言えますが、それを修正する方法がわかりません。ラムダ関数ではなく、関数を定義しようとしましたが、それでも同じエラーが発生します。
かなり基本的なことだと思いますが、理解できないようです。どんな助けでも大歓迎です!
import numpy as np
import pandas as pd
from scipy.stats.distributions import norm
from scipy.optimize import fmin
x = np.random.normal(size=100)
norm_1 = lambda theta,x: -(np.log(norm.pdf(x,theta[0],theta[1]))).sum()
def norm_2(theta,x):
mu = theta[0]
sigma = theta[1]
ll = np.log(norm.pdf(x,mu,sigma)).sum()
return -ll
fmin(norm_1,np.array([0,1]),x)
fmin(norm_2,np.array([0,1]),x)