広告費と売上の関係を分析し、線形回帰を用いて売上を予測する方法をPythonで解説します。データの可視化から未来予測までの流れを実践的に紹介。
データサイエンスでは、データを収集し、可視化・分析して未来を予測することが重要です。特に、回帰分析(Regression Analysis) は、データの関係性を明らかにし、将来の値を予測する強力な手法です。
本記事では、広告費と売上の関係を例に、Python を使って データ収集 → 可視化 → 回帰分析 → 未来予測 のプロセスを実践的に解説します。
使用するライブラリ:
numpy
(数値計算)pandas
(データ処理)matplotlib
、seaborn
(データの可視化)sklearn
(回帰分析)まず、100 件の広告費と売上データをシミュレーションし、データセットを作成します。
PYTHONimport pandas as pd import numpy as np # 再現性を確保 np.random.seed(42) # 広告費(10万円~200万円の範囲でランダムに生成) ad_costs = np.random.uniform(10, 200, 100) # 売上 = 50 + 3.5 * 広告費 + ノイズ sales = 50 + 3.5 * ad_costs + np.random.normal(0, 20, 100) # ノイズを追加 # DataFrame作成 data = pd.DataFrame({'Ad Cost (10K JPY)': ad_costs, 'Sales (10K JPY)': sales})
広告費 (1 万円) | 売上 (1 万円) |
---|---|
81.16 | 335.81 |
190.64 | 711.25 |
149.08 | 573.61 |
123.75 | 443.36 |
39.64 | 184.36 |
まず、広告費と売上の関係を散布図で可視化します。
PYTHONimport matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(10, 6)) sns.scatterplot(x=data['Ad Cost (10K JPY)'], y=data['Sales (10K JPY)']) plt.xlabel("Ad Cost (10K JPY)") plt.ylabel("Sales (10K JPY)") plt.title("Relationship Between Ad Cost and Sales") plt.show()
図の説明:
単回帰分析(Simple Linear Regression)は、1 つの説明変数を使って、1 つの目的変数を予測する手法です。
今回は、広告費(Ad Cost)を説明変数とし、売上(Sales)を目的変数として、広告費が売上に与える影響をモデル化します。
回帰分析の数式は次のようになります。
PYTHONSales = beta_0 + beta_1 * Ad Cost + error
Sales
:目的変数(売上)Ad Cost
:説明変数(広告費)beta_0
:切片(広告費が 0 のときの売上)beta_1
:回帰係数(広告費が 1 増えたときの売上の増加量)error
:誤差(データのばらつき)Python の scikit-learn
を使い、広告費と売上の関係をモデル化します。
PYTHONfrom sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt # 説明変数と目的変数を指定 X = data[['Ad Cost (10K JPY)']] y = data['Sales (10K JPY)'] # モデルの作成と学習 model = LinearRegression() model.fit(X, y) # 回帰係数と切片を取得 coef = model.coef_[0] intercept = model.intercept_ # 散布図と回帰直線の可視化 plt.figure(figsize=(10, 6)) plt.scatter(X, y, label="Actual Data") plt.plot(X, model.predict(X), color='red', label=f"Regression Line (y = {coef:.2f}x + {intercept:.2f})") plt.xlabel("Ad Cost (10K JPY)") plt.ylabel("Sales (10K JPY)") plt.title("Linear Regression Model Visualization") plt.legend() plt.show()
図の説明:
scikit-learn
を使って、単回帰分析を実行し、広告費と売上の関係を数式化します。
PYTHONfrom sklearn.linear_model import LinearRegression # 説明変数と目的変数を指定 X = data[['Ad Cost (10K JPY)']] y = data['Sales (10K JPY)'] # モデルの作成と学習 model = LinearRegression() model.fit(X, y) # 回帰係数と切片を表示 print(f"回帰係数(傾き): {model.coef_[0]:.2f}") print(f"切片(y軸との交点): {model.intercept_:.2f}")
この回帰モデルの数式は次のようになります。
ここで、
model.coef*[0]
model.intercept*
新しい広告費のデータに対して売上を予測します。
PYTHON# 予測したい広告費のリスト(万円) new_ad_costs = np.array([[250], [300], [350], [400], [450], [500]]) # 売上の予測 predicted_sales = model.predict(new_ad_costs) # 結果を表示 for cost, sales in zip(new_ad_costs.flatten(), predicted_sales): print(f"広告費 {cost} 万円の場合、予測売上は {sales:.2f} 万円")
予測結果:
✅ 回帰分析の流れを学んだ
✅ ビジネスへの応用例
回 | タイトル | リンク |
---|---|---|
第 1 回 | 「データサイエンス」について | 詳 細 |
第 2 回 | 単回帰分析で売上を予測 | この記事 |
第 3 回 | K-meansによるデータ分類 | 詳 細 |
第 4 回 | 対数関数とデータスケーリング | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。