记得当时用的是:
用穷举法可以得到在k=2.605有最小的sse。python程序如下:
- import math
- theta=[0,0.15,0.2,0.25,0.4,0.5,0.6,0.7,0.75,0.85,1]
- y=[0,0.016,0.03,0.045,0.1075,0.15,0.236,0.41,0.535,0.798,1]
- y_hat=[]
- all_sse=[]
- def f(k,a):
- return (math.exp(k*a)-1)/(math.exp(k)-1)
- def get_sse(y,y_h):
- sse=0
- for i in range(len(y)):
- sse=sse+(y[i]-y_h[i])**2
- return sse
- for k in range(26000,26200):
- y_hat=[]
- for v in theta:
- y_hat.append(f(k/10000,v))
-
- all_sse.append((get_sse(y,y_hat),k/10000))
- print(min(all_sse))
拟合曲线:
|