機械学習

回帰直線を算出するクラスで抽象メソッドを利用してみた

PythonにはJavaと同じ「オブジェクト指向」という概念があり、データと処理をまとめた「クラス」を定義し、その「クラス」から「インスタンス」を複数作成することができる。

また、Javaと同様にPythonでも、クラスの継承を行ったり、抽象メソッドを定義することもできる。

今回は、スーパークラス(親クラス)に、スケーリング(正規化・標準化等)を行う抽象メソッドと回帰直線を算出する処理を定義し、そのサブクラス(子クラス)で、スケーリング(正規化・標準化等)を行う処理を定義してみたので、そのサンプルプログラムを共有する。

なお、クラスの継承や抽象メソッドについての詳細は、以下のサイトを参照のこと。
https://smile-jsp.hateblo.jp/entry/2022/05/25/000000

スケーリング(標準化・正規化)を行う部分を抽象メソッドに定義した、回帰直線を算出するクラスのソースコードは、以下の通り。

なお、回帰直線を算出する処理については、以下の記事を参照のこと。

最小2乗法と最急降下法を用いて回帰直線を求めてみた 以下のように、入力データ\(x\),\(y\)の値が与えられた場合を考える。 このときの、各点との距離が最小になるような\...



また、先ほどのOrigRegressionLineBaseクラスのサブクラスで、スケーリング部分で標準化を行うクラスのソースコードは、以下の通り。

なお、データを標準化した上で、回帰直線を算出する処理については、以下の記事を参照のこと。

回帰直線を求める際にデータを標準化してみた このブログの以下の記事で、最小2乗法と最急降下法を用いて回帰直線を求めている。 https://www.purin-it.co...

さらに、OrigRegressionLineStdクラスのfitメソッドを呼び出してグラフ化した結果は、以下の通り。

標準化を行い回帰直線を算出するクラスの呼び出し



また、先ほどのOrigRegressionLineBaseクラスのサブクラスで、スケーリング部分で正規化を行うクラスのソースコードは、以下の通り。

なお、データを正規化した上で、回帰直線を算出する処理については、以下の記事を参照のこと。

回帰直線を求める際にデータを正規化してみた このブログの以下の記事で、最小2乗法と最急降下法を用いて回帰直線を求めている。 https://www.purin-it.co...

さらに、OrigRegressionLineNormクラスのfitメソッドを呼び出してグラフ化した結果は、以下の通り。

正規化を行い回帰直線を算出するクラスの呼び出し

要点まとめ

  • Javaと同様にPythonでも、クラスの継承を行ったり、抽象メソッドを定義することができる。