更新:2024/12/10
【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で線形回帰を使う流れ
以下のステップで線形回帰モデルを構築します。
- 必要なライブラリのインポート
- データの準備
- モデルの学習
- モデルの評価
- 予測

ふゅか
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