
今回の件によらず、Pythonで起きるエラーの大半は、エラーメッセージをそのままコピペするといい感じの先行事例行きつきやすいです。
今回のキーワードはすでに察しておられると思いますが、RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 800.になります。これをキーワードに探すと、StackOverflowに行きつきます。
Excelの累乗近似機能のように、次のx, yの数値をPython(Numpy, Scipy)を使って「y = bx^a + c」の形に累乗近似したいと考えています。
エクセルやPythonを抜きにした大枠の話になりますが、最適化問題を扱う際のアプローチとして、一般的に「何回も試して一番いいもの(落としどころ)を答える、無ければエラーを返す」が一般的に取られます。今回の場合も恐らくこれで、StackOverflowの回答にもあるように、(試行回数を増やす、制約を増やす等の)答えに行きつきやすくなるような策をして様子を見るが一番の解決策の様です。具体的には、curve_fit(略, maxfev=8000) のように指定できるはずです。
※試行数を大きくし過ぎると、計算できない場合にずっと待たされるのでご注意ください。もし既定の試行回数が一瞬で済むようであれば、手動で決める試行回数をx10やx100にしても問題ないとは思います。

0 コメント