単回帰分析やってみた
この記事では、単回帰分析をやってみます。
データの生成
まず、ランダムなデータを生成して単回帰分析を行います。以下はPythonコードの一部です。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# データ生成
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
$X$は、、
$[0,1]$の範囲で生成された$(100,1)$の形状をしている乱数が2倍されて、$[0,2]$の範囲の乱数が100個生成されています。
$y$は、、
$y=4+3x$に従うように生成されています。ノイズが加えられています。
データの可視化
生成したデータを散布図で可視化します。
# データ可視化
plt.scatter(X, y, alpha=0.7)
plt.xlabel('X')
plt.ylabel('y')
plt.title('Scatter Plot of Sample Data')
plt.show()
データの分割とモデル構築
データを訓練データとテストデータに分割し、単回帰モデルを構築します。
# データ分割
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_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)
# 訓練データと予測結果の可視化
plt.scatter(X_train, y_train, alpha=0.7, label='Actual (Training)')
plt.plot(X_train, y_train_pred, color='red', label='Predicted')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Training Data and Predictions')
plt.legend()
plt.show()