機械学習(教師あり学習)で線形回帰を行う一般的なコードテンプレート解説

機械学習で線形回帰を行う一般的なコードを、ヒューストンの住宅価格データセットを使って例示します。

Python

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# データの読み込み (例として、CSVファイルから読み込む場合)
# データセットは、例えばKaggleなどで"Houston Housing Dataset"と検索すれば見つかります。
df = pd.read_csv('houston_housing.csv')

# 欠損値の処理 (必要に応じて)
df = df.dropna()

# 特徴量とターゲット変数の分離
X = df[['bedrooms', 'bathrooms', 'sqft', 'lotsize']] # 例として、これらの特徴量を使用
y = df['price']

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 線形回帰モデルの作成と学習
model = LinearRegression()
model.fit(X_train, y_train)

# テストデータに対する予測
y_pred = model.predict(X_test)

# モデルの評価 (平均二乗誤差)
mse = mean_squared_error(y_test, y_pred)
print(f'平均二乗誤差: {mse}')

# 回帰係数と切片の表示
print(f'回帰係数: {model.coef_}')
print(f'切片: {model.intercept_}')

#予測精度の評価
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
print(f'R2スコア: {r2}')

#予測精度の評価(平均絶対誤差)
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_test,y_pred)
print(f'平均絶対誤差:{mae}')

#予測精度の評価(平均二乗平方根誤差)
rmse = np.sqrt(mse)
print(f'二乗平均平方根誤差:{rmse}')

コードの解説:

  1. ライブラリのインポート:
    • numpy: 数値計算ライブラリ
    • pandas: データ分析ライブラリ
    • sklearn.model_selection: データ分割用
    • sklearn.linear_model: 線形回帰モデル
    • sklearn.metrics: モデル評価用
  2. データ読み込み:
    • pd.read_csv(): CSVファイルをDataFrameとして読み込みます。
    • データセットのパスは適宜修正してください。
  3. 欠損値処理:
    • df.dropna(): 欠損値を含む行を削除します。
    • データセットによっては、欠損値補完などの処理が必要になる場合があります。
  4. 特徴量とターゲット変数の分離:
    • X: 特徴量(説明変数)を含むDataFrame
    • y: ターゲット変数(目的変数)を含むSeries
  5. データ分割:
    • train_test_split(): データを訓練用とテスト用に分割します。
    • test_size=0.2: テストデータの割合を20%に設定します。
    • random_state=42: 乱数シードを固定し、結果を再現可能にします。
  6. モデルの作成と学習:
    • LinearRegression(): 線形回帰モデルを作成します。
    • model.fit(): 訓練データを使ってモデルを学習させます。
  7. 予測:
    • model.predict(): テストデータに対する予測を行います。
  8. モデルの評価:
    • mean_squared_error(): 平均二乗誤差(MSE)を計算します。
    • 平均二乗誤差(MSE)は、予測値と正解値のズレを二乗し、その平均をとったものです。値が小さいほど、モデルの精度が高いことを示します。
    • r2_score():R2スコアを計算します。
    • R2スコア(決定係数)は、回帰モデルの当てはまりの良さを0から1の範囲で表します。1に近いほどモデルの精度が高いです。
    • mean_absolute_error():平均絶対誤差(MAE)を計算します。
    • 平均絶対誤差(MAE)は、予測値と正解値のズレの絶対値を平均したものです。
    • np.sqrt(mse):二乗平均平方根誤差(RMSE)を計算します。
    • 二乗平均平方根誤差(RMSE)は、MSEの平方根であり、誤差の大きさを実際の値の単位で表します。
  9. 回帰係数と切片の表示:
    • model.coef_: 回帰係数(各特徴量の重み)を表示します。
    • model.intercept_: 切片(定数項)を表示します。

注意点:

  • データセットのパスや特徴量は、実際のデータに合わせて修正してください。
  • 線形回帰は、特徴量とターゲット変数の間に線形な関係がある場合に有効です。
  • モデルの性能を向上させるためには、特徴量エンジニアリングやハイパーパラメータ調整などが必要になる場合があります。