コメントはまだありませんはじめにPythonで多項式近似を実施したいとき、一番簡単に使えるのはNumpyのPolyfit関数ではないでしょうか。使っていてちょっと困ったのは、Excelでできるように、切片の値を0にできないこと。調べたのですが、Polyfitくらいお手軽にこれが設定できるものがありませんでした。そこで本記事では、numpyのpolyfitをちょっとだけ改造し、以下のようにfit_intercept(y切片を計算対象とするか)を指定できるようなファンクションに書き換える方法を記載します。以下のような簡単なコードで、多項式近似を実行することができます。コードは下記サイト様のものをベースに作成しています。label='3次')plt.grid()plt.legend()plt.show()お手軽です。次にlib→site-package→numpy→libと進み、polynomial.pyを編集します。編集するのが怖い人は、バックアップを取っておくといいでしょう。numpyのver.1.15であれば、393行目くらいにpolyfitという関数があるはずです。これを少しだけ、具体的には3か所書き換えていきます。関数の定義部分に、fit_intercept=Trueという変数を追加します。Trueの場合には今まで同様y切片を計算し、Falseの場合にはy切片を0とした解を返すようにします。他のスクリプトに影響が出ないよう、デフォルトの値をTrue(今まで通り)としておきます。fit.変更後#fit_intercept=Trueを追加する。order)という行が見つかるはずです。これが多項式の説明変数を作っている部分ですので、この中にある定数項(一番右の行)を落とせばy切片を考慮しない計算ができます。そこで以下のように書き換えます。fit_interceptがFalseの場合には一番右の列を計算対象から外す。y変更点3係数に切片0を加えるさらに580行目くらいまで下げていくと、係数cが計算されている行が見つかります。変更点2でy切片が計算されないようになったので、本来y切片が入る配列の一番最後に0.0を追加しましょう。fit_interceptがFalseの場合には配列の最後に0.0を足す。matrixこれで修正は完了です。先ほどのコードの近似式の計算の部分に、fit_intercept=Falseを指定します。label='3次')plt.grid()plt.legend()plt.show()各線が原点を通過するようになりました。まとめinterceptを0にできるpolyfit関数の改造方法を記載しました。Excelで簡単にできることがPythonでは難しいというのも悔しいので、こういった関数をどんどん活用していきたいですね。ソースコードpolyfit部分を抜き出しておきます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。プロフィール兵庫県在住の30代データサイエンティスト。Pythonを使った機械学習等によるデータ分析や、ウェブアプリ等のシステム開発に取り組んでいます。