最小二乗法(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])
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()
predicted_sales = linear_model(600, m, c) print(f'広告費用が600の場合の予測売上: {predicted_sales:.2f} 千円')
|
この例では、Scipyのcurve_fit
関数を使用して広告費用と売上の関係を線形モデルでモデル化しました。
そして、グラフを使ってデータとモデルの適合度を可視化し、広告費用が600の場合の売上を予測しました。
これはScipyを使用したデータ解析とグラフ化の基本的な例です。
Scipyはさまざまな科学的な問題を解決するための豊富なツールを提供しており、特定の問題に合わせて適切なツールを選択できます。