pythonを使って最小二乗法のプログラムを書こうとしています。
乱数を使って適当なデータ(1)を作成しそれを
y=a*sinx+1…(2)
でフィッティングし、最も良いaの値を決定したいです。
残差の2乗(epsilon)を計算するところまではできました。
python
1b = np.random.normal(0,1,11) 2data = 2*(1+b*0.1)*np.sin(np.radians(deg))+1 #乱数を使ったデータ(1) 3deg = np.linspace(0,90,11) 4for i in range(1,10): 5 sin_i = (i*0.1+1.5)*np.sin(np.radians(deg))+1#a*sinx+1として1.5≦a≦2.5まで0.1刻みでaの値を変えていく…(2) 6 epsilon = ((data) - (sin_i))**2#データとsin_iの差の2乗の和をとる。 7for j in range(0,10): 8 sum_all =np.sum(epsilon[j])#各iに対する配列epsilonの和をとる 9 print(sum_all)#各iに対するepsirlonの和を表示する。 10min(sum_all)#最小になるepsilonを表示する。
しかし、最後の行の
min(sum_all)
で、TypeError: 'numpy.float64' object is not iterable
とうエラーが出てしまいます。
sum_allの最小値を求める方法とその最小値が何番目のiなのか
(i,sum_all)の形で求める方法を教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/04 08:21