Pythonで最小二乗法を計算する方法

Python

本記事ではPythonで最小二乗法を計算する方法を紹介します。
Pythonで最小二乗法を計算するためにはscikit-learnを使用します。
また、結果を可視化するためにmatplotlibを使用します。

最小二乗法とは

最小二乗法とは、与えられたデータにもっともらしい線を引く方法です。
左のようにデータが与えられた際に、右のような直線を引くために行う方法が最小二乗法で線形回帰の一種です。

最小二乗法の実装方法

事前準備

まずはscikit-learnとmatplotlibをインストールします。
下記のコマンドでインストールできます。

pip install scikit-learn matplotlib

なお、Google Colaboratoryには既にscikit-learnとmatplotlibはインストール済みです。

実装

今回は、カルフォルニア住宅価格データのAveBedrms(1世帯あたりの平均寝室数)とAveRooms(1世帯あたりの平均部屋)の2つのデータ間に最小二乗法を適用してみます。

# ①カルフォルニア住宅価格データの準備
from sklearn.datasets import fetch_california_housing
california_housing = fetch_california_housing(as_frame=True)

# ②最小二乗法の実行
from sklearn.linear_model import LinearRegression
X_df = california_housing.data
model = LinearRegression()
model.fit(X_df[['AveBedrms']].values, X_df['AveRooms'].values)

# ③結果の可視化
import matplotlib.pyplot as plt
plt.scatter(X_df['AveBedrms'], X_df['AveRooms'], color = 'blue')
plt.title('Regression Line')
plt.xlabel('AveBedrms')
plt.ylabel('AveRooms')
plt.grid()
plt.show()   
最小二乗法の実装
  • カルフォルニア住宅価格データの準備

    from sklearn.datasets import fetch_california_housingでカルフォルニア住宅価格データ取得関数を使用できるようにし、fetch_california_housing(as_frame=True)でデータを取得します。

    引数にas_frame=Trueを入力することでデータをDataFrameの形で取得できます。
    as_frame=Falseとするとデータをnumpy.arrayで取得できます。

  • 最小二乗法の実行

    from sklearn.linear_model import LinearRegressionで最小二乗法のライブラリをインポートします。
    X_df = california_housing.dataで特徴量を取得します。
    model = LinearRegression()で最小二乗法のモデルをインスタンス化します。
    model.fit(X_df[['AveBedrms']].values, X_df['AveRooms'].values)で最小二乗法の計算をします。

  • 結果の可視化

    import matplotlib.pyplot as pltでライブラリをインポートします。
    plt.scatter(X_df['AveBedrms'], X_df['AveRooms'], color = 'blue')で散布図を出力します。
    plt.title('Regression Line')で図にタイトル名をつけます。
    plt.xlabel('AveBedrms')でX軸にラベルをつけます。
    plt.ylabel('AveRooms')でY軸にラベルをつけます。
    plt.grid()でグリッド線を出力します。
    plt.show()で図を出力します。

先程のコードを実行すると下記のヒートマップが表示されます。

タイトルとURLをコピーしました