最小二乗法(達成scipyのダウンロード)

数学の数の増加に基づいscipyのダウンロードライブラリnumpyのライブラリは、科学技術計算は、一般的にライブラリ関数を使用していました。そのような線形代数、常微分方程式の数値解法、信号処理、画像処理、等疎行列として。

以下の最小二乗は、scipyのダウンロードによる計算に合うことが理解されます

フィッティング最小二乗(関数を最適化します)

scipy.optimize輸入leastsqから 

、関数を含む関数leastsq最小二乗法最適化

パラメータを最小二乗フィッティングによって得られた正弦関数のフィッティングを、以下により。FUNC 3つのパラメータA、kは、シータは、それぞれ、周波数、位相角の振幅に対応します。

 

AS NP numpyのインポート
scipy.optimizeインポートleastsqから
PL ASインポートpylab 
インポートMPL pylabから
mpl.rcParams [ 'セリフ-font.sans'] = [ 'カイティ']#中国の歪みソリューション
mpl.rcParams [ 'axes.unicode_minus']ブロック内の問題を解決するため=偽#負号

DEF FUNC(X、P): 
は関数によって使用されるデータをフィッティング:* SIN(2 * PI * X + K *シータ)

	A、K、P =シータが
	返さnp.sin *(2 * X + np.pi * K *シータ)

DEF残差(P、Y、X): 
実験データx、yおよびフィッティング係数との間の差の関数は、pがフィッティングを見つける必要があります

	Yリターン- FUNC(X、P)

X = np.linspace(0、-2 * np.pi、100)#演算シーケンスを作成し、数100は、データ点を示し
、A、K、シータ= 10、 0.34、NPを。 関数は、PI / 6#実際のデータパラメータ
Y0 = FUNC(X、[ 、K、θ)# 実データ
Y1 = Y0 + 2 * np.random.randn( LEN(x))を# 追加実験ノイズデータを

P0 = [7,0.2,0]#は、最初の関数フィッティングパラメータを推測します

「」「
	1は、フィッティングleastsqデータ呼び出し
	誤差関数計算する残差、2 
	3、P0はフィッティングパラメータの初期値である
	4、argsがに関する実験データに適合する必要が
「」」
、plsq = leastsq(残差、P0 =引数(Y1、X))

を印刷(U "trueパラメータ:" [、K、θ)
プリント(U "フィッティングパラメータ:"、[0])#実験データのフィッティングパラメータplsq 

#などを図の
pl.plot(X、Y0、ラベル= U ' 真のデータ')
pl.plot(X、Y1、Uラベル= '実験データは騒々しい')
pl.plot(X、FUNC(X、plsq [0] )、ラベル= U "フィットデータ")
pl.legend()
pl.show()  

 グラフィックショー:

 

上記周期的な正弦関数ことがわかるので、動きとフィッティングパラメータと実際のデータの法則は、実質的に同一です。

 

おすすめ

転載: www.cnblogs.com/hqczsh/p/11297669.html