最小二乗法(Linear Regression) scipy

最小二乗法(Linear Regression)

Scipyを使用して現実的な問題を解決し、結果をグラフで視覚化する例を示します。

以下は、一般的な問題の一つである最小二乗法(Linear Regression)を用いた簡単なデータ解析の例です。

問題:

あるウェブサイトの広告費用とその広告によって獲得した売上データがあります。

このデータを使用して、広告費用と売上の関係を最小二乗法を使ってモデル化し、将来の広告費用に対する売上を予測したいと思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# サンプルデータ生成
ad_costs = np.array([100, 200, 300, 400, 500]) # 広告費用(千円)
sales = np.array([50, 80, 110, 150, 200]) # 売上(千円)

# 線形モデルを定義(y = mx + c)
def linear_model(x, m, c):
return m * x + c

# 最小二乗法によるモデルパラメータの推定
params, covariance = curve_fit(linear_model, ad_costs, sales)

# 推定されたモデルパラメータ
m, c = params

# グラフ化
plt.scatter(ad_costs, sales, label='Actual Data')
plt.plot(ad_costs, linear_model(ad_costs, m, c), 'r', label=f'Predicted Model: y = {m:.2f}x + {c:.2f}')
plt.xlabel('Advertising Costs (thousand yen)')
plt.ylabel('Sales (thousand yen)')
plt.legend()
plt.title('Relationship between Advertising Costs and Sales')
plt.grid(True)
plt.show()

# 例えば、広告費用が600の場合の売上を予測
predicted_sales = linear_model(600, m, c)
print(f'広告費用が600の場合の予測売上: {predicted_sales:.2f} 千円')

この例では、Scipyのcurve_fit関数を使用して広告費用と売上の関係を線形モデルでモデル化しました。

そして、グラフを使ってデータとモデルの適合度を可視化し、広告費用が600の場合の売上を予測しました。

これはScipyを使用したデータ解析とグラフ化の基本的な例です。

Scipyはさまざまな科学的な問題を解決するための豊富なツールを提供しており、特定の問題に合わせて適切なツールを選択できます。