いくつかの係数を持つ 2 つ以上の nd 配列が (おおよそ) 3 番目の配列に追加される状況があります。
array1*c1 + array2*c2 ... = array3
最初の 2 つの配列を最もよく近似するc1
とを探しています。これを行う方法がscipyにあると確信していますが、どこから始めればよいかわかりません。私が始めるべき特定のモジュールはありますか?c2
array3
いくつかの係数を持つ 2 つ以上の nd 配列が (おおよそ) 3 番目の配列に追加される状況があります。
array1*c1 + array2*c2 ... = array3
最初の 2 つの配列を最もよく近似するc1
とを探しています。これを行う方法がscipyにあると確信していますが、どこから始めればよいかわかりません。私が始めるべき特定のモジュールはありますか?c2
array3
numpy.linalg.lstsqがこれを解決します。その関数のオブジェクト指向ラッパーと、より高度な回帰モデルは、scikit-learnとStatsModelsの両方で利用できます。
(免責事項: 私は scikit-learn 開発者なので、これはこれまでで最も公平なアドバイスではありません。)
これは単なる線形回帰です (http://en.wikipedia.org/wiki/Ordinary_least_squares)。
行列A
に の列を持たarray1, array2, ...
せ、ベクトルを列ベクトルにしa
ます。array3
x
[c1,c2,...]'
問題を解決したいmin_{x} (Ax-a)^2
。
導関数を取り、ゼロに設定すると0=A'Ax-A'a
、解が得られますx=(A'A)^{-1}A'a
。
numpy では、これはnumpy.linalg.solve(numpy.dot(A.T,A),numpy.dot(A.T,a))
.