0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

単回帰分析やってみた

Posted at

単回帰分析やってみた

この記事では、単回帰分析をやってみます。

データの生成

まず、ランダムなデータを生成して単回帰分析を行います。以下は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()

image.png

データの分割とモデル構築

データを訓練データとテストデータに分割し、単回帰モデルを構築します。

# データ分割
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()

訓練データに対するフィッティングは以下のようになります。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?