x_data に 3x2000 numpy 配列があり、y_data に 1x2000 numpy 配列があり、これをこの関数 regress に渡して回帰直線を取得します。それは正常に動作します。問題は、私がいくつかのバックテストを実行しようとしていて、1000 回回帰する必要がある 1000 の状況をテストしようとしているということです。これを実行するには約 5 分かかります。
変数を標準化しようとしましたが、高速化されていないようです。
fmin_powell と fmin_bfgs も簡単に試してみましたが、それが壊れたようです。
何か案は?ありがとう!
def regress(x_data, y_data, fg_spread, fg_line):
theta = np.matrix(np.ones((1,x_data.shape[0]))*.11)
hyp = lambda theta, x: 1 / (1 + np.exp(-(theta*x)))
cost_hyp = lambda theta, x, y: ((np.multiply(-y,np.log10(hyp(theta,x)))) - \
(np.multiply((1-y),(np.log10(1-hyp(theta, x)))))).sum()
theta = scipy.optimize.fmin(cost_hyp, theta, args=(x_data,y_data), xtol=.00001, disp=0)
return hyp(np.matrix(theta),np.matrix([1,fg_spread, fg_line]).reshape(3,1))