[數據分析#60] 如何用數據分析預測庫存或業績?Python 線性回歸模型真實案例分享!(含練習包下載)

最近有一些讀者跟學員來信,跟我說他們想要學習怎麼預測庫存,他們的問題可能是:

  • 是倉庫人員,希望可以提早依據不同的活動類型,提早準備貨量
  • 是行銷人員,希望可以預測自己舉辦的不同行銷活動,會銷售多少?

為什麼要預估貨量、預測業績或銷量?

不論是預估貨量、預測業績,這些問題的底層邏輯都是一樣的,我來拆解一下給大家看:

  • 目標:希望可以知道 A 商品,在不同情況下的銷售狀況
  • 背景:我們有過去不同行銷活動下的 A 商品銷售情況 (過去的數據)
  • 預測:利用過去的數據,對未來做預測,預測銷售量、單量、或是預計可能會銷售的貨量,讓每個部門的人都可以提前做好準備

預估貨量、預測業績,都是為了可以讓不同部門的人,可以更好的做好萬全準備,以應付未來可以預知的狀況 (因為過去做過類似的事情,所以可以透過過去預估未來)

怎麼預估貨量或是預測業績?3 個核心步驟分享

步驟一:準備好過去的資料

  • 這邊的資料準備,會需要你有一定的 excel 或是 sql 基礎
  • 你會準備的資料維度包括 X (自變數) 跟 Y (應變數),X 的值會影響 Y 的結果:
    • 品項
    • X:無活動時的銷量
    • X:有活動時的銷量 (可以分 A 活動、B 活動)
    • Y:實際銷量
  • 無活動時的銷量應該怎麼估算?
    • 可以用過去幾天的平均,以反映最新的狀況
  • 有活動時的銷量應該怎麼估算?
    • 可以用過去相似時間的銷量,以反映最新的狀況

步驟二:以線性回歸模型來檢測準確度

  • 這邊會需要一點點 python 的基礎,以完成線性回歸模型的架設
  • 一開始會需要將步驟一的資料讀進去
  • 接著,X 是自變數,Y 是結果,我們要丟到模型中訓練,並且確認一下用線性回歸預測銷量的準確度 (每個案例的準備度有所不同,請自行評估)
  • 用散佈圖、實際值及預測值之間的殘差分佈圖、R 平方來判斷線性回歸預測銷量的準確度

步驟三:準備結論以及行動方案

  • 如果模型可以用,就可以準備做總結及行動方案
    • 合作部門怎麼用這個模型?
    • 什麼樣的貨種適合這個模型?(可以搭配其他商業分析的思維來下結論)

Python 實作分享:用線性回歸模型來預測貨量、業績、銷量

1. 匯入套件

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import csv

# 匯入套件並且執行 Google 帳號驗證
# 查看gspread版本
# ref: <https://cyublog.com/articles/python-zh/colab-tutorial-google-spreadsheet/>

import gspread
print(gspread.__version__)

# 執行驗證

from google.colab import auth
auth.authenticate_user()

import gspread
from google.auth import default
creds, _ = default()

gc = gspread.authorize(creds)

2. 匯入資料、轉資料格式 (data_type)

# 讀取 Google Sheet 試算表內的資料
# 讀取 google sheet
# 可以在自己的雲端硬碟中,以 google sheet 建立一份資料

workbook = gc.open_by_key('1YJlH2TPA8srztIT7eavCrsW_peYsrkdWfc9JYNVBa3k')

# 讀取特定的 tab
sheet = workbook.worksheet('tab')

# 將 Google Sheet 內資料轉變成 Python 內的 DataFrame (表格) 形式

# pandas: 將表格轉換成dataframe來處理

import pandas as pd
values = sheet.get_all_values()
df = pd.DataFrame(values[1:], columns=values[0])

# 查看資料概況

df.head()
df.info()
df.describe()

# 處理一下 data type

df["organic"] = df["organic"].astype("float")
df["a_campaign"] = df["a_campaign"].astype("float")
df["b_campaign"] = df["b_campaign"].astype("float")
df["actual_amount"] = df["actual_amount"].astype("float")
df.info()

3. 重頭戲:開始做線性回歸模型

# X 是想探索的自變數,Y 是應變數 (結果)
df.columns

# 準備 X & y array
X = df[['organic', 'a_campaign', 'b_campaign']]
y = df['actual_amount']

# 將資料分成訓練組及測試組
from sklearn.model_selection import train_test_split

# test_size代表測試組比例,random_state 代表設定隨機種子,讓測試結果可被重複
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=101)

# 載入線性迴歸,並訓練模型
from sklearn.linear_model import LinearRegression
lm = LinearRegression()
lm.fit(X_train,y_train)

# 取得截距:如果公式是 y=a+bx,a 就是截距
print(lm.intercept_)

# 取得迴歸係數 b,並用 Data Frame 顯示
lm.coef_

X_train.columns
cdf = pd.DataFrame(lm.coef_,X_train.columns,columns=['Coef'])
print(cdf)

4. 用三個方式檢查模型的準確度:散佈圖、殘差分佈圖、R 平方

#比較實際跟預測之間的差距

plt.scatter(y_test,predictions)

# 看實際值及預測值之間的殘差分佈圖

predictions = lm.predict(X_test)
predictions
sns.distplot((y_test-predictions))

# R 平方
r2 = lm.score(X_test,y_test)  
print ('R^2 = %.2f'%r2)
Google Colab Python:回歸分析及預測,銷量預測範例
Google Colab Python:回歸分析及預測,銷量預測範例

如何用預測模型影響決策?結論及行動方案分享!

結論:簡單解釋模型如何幫助我們解決問題

  • 背景、目標解釋
  • 資料集如何準備的
  • 選擇什麼模型 (回歸模型) 進行訓練
  • 模型準度為何
  • 以商業分析角度分析:什麼樣的貨種的準確度最高?(用 excel, sql 統計)

行動方案:跨部門怎麼使用

  • 以商業分析角度思考:什麼情況下可以使用模型?
  • 跨部門使用方式解釋

結論:這次的案例非常經典,走過一遍典型的預測流程

  • 這是很典型在業界會碰到的狀況:預測貨量、預測業績
  • 因此如果你希望你的專案或是作品集可以應用這樣的流程,來嘗試看看做預測模型
  • 可以點擊下方下載完整的數據練習包、完整的程式碼 (Python code)、以及最終結論及行動方案的簡報 (故事線)
Google Colab Python:回歸分析及預測,銷量預測作品集示範

【1 對 1 免費諮詢】數據分析師 0~1 培訓班陪你一路到轉職成功!

hi 我是 Lisa

你也是 0 經驗、沒有相關背景,但也想要轉職數據分析師,或運用數據分析,提升在領域的專業度嗎?

-

你是否也覺得,數據分析的網路學習資源很多,但是多到不知道從哪裡開始?

學了很多工具,但學完了,問題才真正開始,不知道業界怎麼使用?又該如何面臨工作跟面試?

-

我在 2019 年從營運專員的職位轉職到數據分析師

在這之後,因為數據分析,也讓我快速建構不同領域的知識:行銷、營運、商業策略、產品、網頁

轉職過程中,花了很多時間成本摸索

我發現,學數據分析最快的方式是:

  1. 確認自己跟市場需求之間的差距:訂定轉職策略及了解數據分析師的工作方式
  2. 以業界應用的角度學習工具:包括數據工具及分析用思維架構,並且如何高效運用
  3. 建立一個商業上的真實專案,並且得到回饋:打造屬於你及貼合職缺需求的作品集和專案
  4. 打造一個高效履歷跟面談:透過高價值包裝術拿下面試、成功獲得數據行業的門票

當初如果我有這套系統思維,應該可以在短時間內轉職,馬上拿到進入業界的門票

-

現在,我想把這套完整課程分享給你

這是專門為了 0 經驗、沒有相關背景的轉職者所設計

不需要去考研究所、不需要花大錢準備出國讀書

可以用最快的時間準備轉職、拿到門票!

-

如果你正在準備轉職數據分析師,且試圖找過解決辦法卻始終治標不治本!歡迎跟我預約免費 1 對 1 諮詢,我會在諮詢時,了解你的需求並且評估我是否可以協助到你!

電子書 職場人必學的數據分析術

Lisa Wu

Hi 大家好!我是喜歡探索身心靈健康及平衡的數據分析師 Lisa Wu!這個網站會幫助你:利用數據分析 (理性) 及 身心靈平衡 (感性) 的系統,去達成人生目標!如果你對我的人生系統工具有興趣,歡迎聯繫我:couplehonest@gmail.com

This Post Has One Comment

Comments are closed.