PLS回帰とは
PLSは部分的最小二乗回帰 (Partial Least Squares Regression)の略であり、サンプルサイズが小さかったり、多重共線性が考えられる場合に有効な分析方法の一つになります。
必要なモジュールの読み込み
以下のコードで必要なモジュールを読み込みます。
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.decomposition import PCA
from sklearn.cross_decomposition import PLSRegression
import matplotlib.pyplot as plt
plt.style.use('ggplot') #グラフのスタイル
plt.rcParams['figure.figsize'] = [12, 9] # グラフサイズ設定
データの読み込みと分割
ボストン住宅価格のサンプルデータを読み込み、学習データとテストデータに分割します。
X,y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=123)
PLS回帰モデルの構築
以下のコードでPLS回帰モデルを構築します。
PCR_model = make_pipeline(StandardScaler(), PCA(n_components=3), LinearRegression())
PCR_model.fit(X_train, y_train)
モデルの評価
構築したモデルの予測精度を、学習データで見てみます。
# R2(決定係数) R2
R2 = round(PCR_model.score(X_train, y_train),2)
# グラフ
plt.scatter(y_train, PCR_model.predict(X_train))
plt.title('Train data - R2='+str(R2))
plt.xlabel("actual")
plt.ylabel("predicted")
以上で、Pythonを用いたPLS回帰の実装についての基本的な流れを説明しました。この情報が役立つことを願っています。