【Scikit-learn】線形回帰の意味と使い方について

はるか
はるか
線形回帰、知ってる?
ふゅか
ふゅか
もちろん!「データを直線で説明するモデル」よね。

1. Scikit-learnと線形回帰

線形回帰(Linear Regression)は、統計や機械学習において最も基本的で広く使用されるモデルの1つです。この記事では、Python機械学習ライブラリScikit-learn」を使用して、線形回帰モデルを構築・利用する方法をわかりやすく解説します。

1.1. 線形回帰とは?

線形回帰は、「ある値(目的変数)」を「別の値(説明変数)」を使って直線で予測するモデルです。たとえば、家の面積を基に価格を予測したり、広告費用から売上を推定するようなケースで使われます。

線形回帰のモデルは次のような形式で表されます。

\[ y = \beta_0 + \beta_1 x + \epsilon \]

ここで、

  • \( y \) は目的変数(従属変数)
  • \( x \) は説明変数(独立変数)
  • \( \beta_0 \) は切片(y軸と交わる点)
  • \( \beta_1 \) は傾き(回帰係数)
  • \( \epsilon \) は誤差項

2. Scikit-learnで線形回帰を使う流れ

以下のステップで線形回帰モデルを構築します。

  1. 必要なライブラリのインポート
  2. データの準備
  3. モデルの学習
  4. モデルの評価
  5. 予測
ふゅか
ふゅか
Scikit-learnでは、どんなステップで線形回帰をするの?
はるか
はるか
まず、ライブラリをインポート。次にデータ準備。最後にモデルを学習して評価する。
ふゅか
ふゅか
トレーニング用とテスト用にデータを分けるのも大事だよね。
はるか
はるか
train_test_splitを使うと便利。

2.1. 実装例

以下に具体的なコード例を示します。

2.2. ライブラリのインポート

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.datasets import load_diabetes
import japanize_matplotlib

2.3. データの準備

今回はシンプルなデータセットを使用します。Scikit-learnの「train_test_split」関数を使って、データをトレーニング用とテスト用に分割します。データセットには糖尿病のデータセットを利用します。

# サンプルデータの作成
diabetes= load_diabetes()
X,y = diabetes.data,diabetes.target

# トレーニングデータとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)

2.4. モデルの学習

Scikit-learnのLinearRegressionクラスを使います。

# 線形回帰モデルの作成
model = LinearRegression()

# モデルをトレーニング
model.fit(X_train, y_train)

2.5. モデルの評価

学習後、テストデータでモデルを評価します。ここでは平均二乗誤差(Mean Squared Error, MSE)とRMSEを使用します。

# テストデータで予測
y_pred = model.predict(X_test)

# 平均二乗誤差を計算
mse = mean_squared_error(y_test, y_pred)
print(f"平均二乗誤差: {mse}")
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"RMSE: {rmse}")

今回のケースはあまりうまくいっていないようですね。ここから、使用する特徴量を選択したほうがよさそうです。

PR