[002]高度な最適化の回帰「BFGS」

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/shipsail/article/details/89599471

レビュー

単一の変数線形回帰の[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,)

描画:
ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/shipsail/article/details/89599471
おすすめ