最小二乗法をちょっと利用したくなって、確か ScientificPython でやったことがあったよな、という微かな記憶を頼りに「最小二乗法 ScientificPython」でぐぐったら、4 件しかでてこなかった。
「ScientificPython least square」で約 2,990 件。
まあ、世界的にも少数派なのかもしれない。
(他の皆は何を使っているのだろう)
というわけで、メモを残しておこう。
まずは from Scientific.Functions.LeastSquares import * としておいて、
一番簡単な直線の当て嵌めは
>>> polynomialLeastSquaresFit((1, 1), [(x1, y1), (x2, y2), (x3, y3)])
とやればいい。
最初の引数の (1, 1) は初期値なので別の値でもいいが、二つの数字のタプルを与えることで直線の指定になっている。
つまり、関数名から判るように多項式の当て嵌め関数なので、三つにすれば二次式、四つにすれば三次式で当て嵌めてくれる。
さらに自由度の高い関数が leastSquaresFit で、パラメータのシーケンスと変数で決められる関数を引数に渡して、そのパラメータを最適に決めてくれる。
もっとも、少しやるとしょっちゅう「非正則行列が出た」とかいうエラーに遭遇することが経験できると思う。
つまり、あまり自動化することは向いていない。
ということで、久しぶりに ScientificPython をインストールしたというお話(…あれ?)。
|