pianofisica

Mathematics & Physics, Maxima, a bit Python & Wolfram, and Arts

Pythonで学ぶ機械学習:線形回帰

機械学習の具体的な問題にPythonを使って、機械学習Pythonも同時に学んでしまいましょう。今回は機械学習の基本的な予測モデルである線形回帰についてまとめました。

この記事では scikit-learn(sklearn)ライブラリを用います。適宜

pip install scikit-learn

などによってダウンロード・インストールしてください。




 

線形回帰モデルの実装

線形回帰モデルは、入力値  x に対して予測値  y を線形関数

\qquad y=ax+b

によってモデル化するものです。問題としては、与えられたデータセットからパラメタ  ab の妥当な値を求めるということになります。

from sklearn.linear_model import LinearRegression
import numpy as np

# サンプルデータ(特徴量Xとターゲットy)
X = np.array([[1], [2], [3], [4], [5]])  # 入力(特徴量)データ
y = np.array([9.8, 20.1, 28.7, 40.8, 50.2])  # 出力(ターゲット)データ

# モデルの作成と学習
model = LinearRegression()
model.fit(X, y)

# 予測
x_pred = np.array([[2.5], [3.5], [4.5]])
y_pred = model.predict(x_pred)

# 結果表示
print("回帰係数(a):", model.coef_[0])
print("切片(b):", model.intercept_)
print("予測値:", y_pred)
回帰係数(a): 10.15
切片(b): -0.5299999999999976
予測値: [24.845 34.995 45.145]

ポイント

  • model.fit(X, y) でデータを学習
  • model.coef_ で傾き a、model.intercept_ で切片 b を取得
  • model.predict(X) で予測値を計算

 

線形回帰モデルの可視化

上で扱ったデータセットと、そこから得られた線形回帰モデルを Matplotlib を使って可視化してみます。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# サンプルデータ
X = np.array([[1], [2], [3], [4], [5]])  # 特徴量
y = np.array([9.8, 20.1, 28.7, 40.8, 50.2])  # 出力データ

# モデルの作成と学習
model = LinearRegression()
model.fit(X, y)

# グラフ描画
plt.scatter(X, y, color="blue", label="Data")  # 実際のデータ点
plt.plot(X, y_pred, color="red", linewidth=2, label="Linear Regression")  # 予測直線

# タイトルとラベル
plt.title("Visualization of Linear Regression")
plt.xlabel("Feature")
plt.ylabel("Target")
plt.legend()
plt.show()

ポイント

  • plt.scatter(X, y) で元データを青い点で描画
  • plt.plot(X, y_pred) で回帰直線を赤線で描画

 


 
 

キーワード機械学習Python、基礎

プライバシーポリシー