本記事では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()
で図を出力します。
先程のコードを実行すると下記のヒートマップが表示されます。

