免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
ディレクトリ
レビュー
単一の変数線形回帰の[001] Python実装単純な線形回帰と一変量勾配降下問題Pythonで達成されました。
BFGS
scipyのダウンロードクラスライブラリは、多くのアルゴリズム、BFGS L-BFGSを達成されているというように、これらのライブラリは、私たちは自分自身をコーディング複雑を必要とせずに、迅速に問題を解決するために、そして時には完全に内部の原理を理解する必要はありません。それは深い数学的知識の多くが含まれているため。
どのように呼び出す方法
文書のscipyのダウンロードの最適化(最適化)命令の公式な解釈ではまず見
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize
scipy.optimize.minimize(楽しい、X0、引数=()、メソッド=なし、JAC =なし、ヘス=なし、hessp =なし、境界=なし、制約=()、TOL =なし、コールバック=なし、オプション=無し )
paramの名前 | 説明 |
---|---|
遊び | 楽しい(シータ、*引数) - >フロート、第1のパラメータシータは、浮動小数点数、すなわち、計算費用関数を返します |
X0 | アレイ状(2)、シータにおける初期推測その着信楽しいです |
引数 | 入ってくるの楽しみの機能に必要なタプル、他のパラメータ |
方法 | ように文字列「L-BFGS-B」「BFGS」と、公式文書の詳細を参照するには |
他の | マニュアルを参照してください |
コードを書く前に、期間については、我々はいくつかの場所を変更する必要が
最優先パラメータシータを与える必要があり、公式の要件に応じて第1
def CostFunction(theta,X,y):
'''
h(x) = X * theta.T
Cost =1/(2m)*sum[(h(x) - y)^2]
'''
len = X.shape[0]
j = np.power(X.dot(np.transpose(theta)) - y,2)
return np.sum(j) / (2 * len)
そして、必要なパケットをインポートし、最小限の呼び出し
import scipy as sp
from scipy.optimize import minimize
mini = minimize(CostFunction,
x0=theta,
args=(X,boston_target),
method='BFGS')
print(mini)
打印结果:
fun: 14.733068874736421
hess_inv: array([[ 1.24250516e+01, -1.69448468e-01],
[-1.69448468e-01, 2.51313376e-03]])
jac: array([ 1.19209290e-07, -4.29153442e-06])
message: 'Optimization terminated successfully.'
nfev: 32
nit: 6
njev: 8
status: 0
success: True
x: array([31.27662827, -0.12489439])
x就是拟合后的theta系数 shape:(2,)
描画: