機械学習で線形回帰を行う一般的なコードを、ヒューストンの住宅価格データセットを使って例示します。
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}')
コードの解説:
- ライブラリのインポート:
numpy
: 数値計算ライブラリpandas
: データ分析ライブラリsklearn.model_selection
: データ分割用sklearn.linear_model
: 線形回帰モデルsklearn.metrics
: モデル評価用
- データ読み込み:
pd.read_csv()
: CSVファイルをDataFrameとして読み込みます。- データセットのパスは適宜修正してください。
- 欠損値処理:
df.dropna()
: 欠損値を含む行を削除します。- データセットによっては、欠損値補完などの処理が必要になる場合があります。
- 特徴量とターゲット変数の分離:
X
: 特徴量(説明変数)を含むDataFramey
: ターゲット変数(目的変数)を含むSeries
- データ分割:
train_test_split()
: データを訓練用とテスト用に分割します。test_size=0.2
: テストデータの割合を20%に設定します。random_state=42
: 乱数シードを固定し、結果を再現可能にします。
- モデルの作成と学習:
LinearRegression()
: 線形回帰モデルを作成します。model.fit()
: 訓練データを使ってモデルを学習させます。
- 予測:
model.predict()
: テストデータに対する予測を行います。
- モデルの評価:
mean_squared_error()
: 平均二乗誤差(MSE)を計算します。- 平均二乗誤差(MSE)は、予測値と正解値のズレを二乗し、その平均をとったものです。値が小さいほど、モデルの精度が高いことを示します。
r2_score()
:R2スコアを計算します。- R2スコア(決定係数)は、回帰モデルの当てはまりの良さを0から1の範囲で表します。1に近いほどモデルの精度が高いです。
mean_absolute_error()
:平均絶対誤差(MAE)を計算します。- 平均絶対誤差(MAE)は、予測値と正解値のズレの絶対値を平均したものです。
np.sqrt(mse)
:二乗平均平方根誤差(RMSE)を計算します。- 二乗平均平方根誤差(RMSE)は、MSEの平方根であり、誤差の大きさを実際の値の単位で表します。
- 回帰係数と切片の表示:
model.coef_
: 回帰係数(各特徴量の重み)を表示します。model.intercept_
: 切片(定数項)を表示します。
注意点:
- データセットのパスや特徴量は、実際のデータに合わせて修正してください。
- 線形回帰は、特徴量とターゲット変数の間に線形な関係がある場合に有効です。
- モデルの性能を向上させるためには、特徴量エンジニアリングやハイパーパラメータ調整などが必要になる場合があります。