使用機器學習和Python進行庫存需求預測
簡介
任何企業都必須謹慎管理其庫存,因為它必須選擇合適的庫存量以滿足客戶需求,同時將成本降至最低。庫存管理嚴重依賴於準確的需求預測,以幫助企業避免缺貨和庫存過剩的問題。組織可以利用機器學習的發展和海量歷史資料的可用性,來改進其庫存需求預測系統。本文將探討如何使用機器學習和Python準確預測庫存需求。
定義
在當今世界,基於歷史銷售資料、市場趨勢和其他相關變數,估算未來庫存或服務需求的技術和系統被稱為庫存需求預測。如今,技術得到了增強,透過評估歷史資料中的模式和趨勢,機器學習演算法可以學會有效地預測未來的需求。這使企業能夠最佳化其庫存水平並做出明智的判斷和決策。讓我簡單地解釋一下,庫存預測就是我們根據之前銷售的玩具數量來猜測我們需要多少玩具。我們使用稱為機器和python的特殊計算機程式來幫助我們進行這些猜測。
語法
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.<model> import <Model>
# preprocess the data and load it
data = pd.read_csv('inventory_data.csv') # Load the inventory data from a CSV file
# If required do processing on data
# Split the data into features and target variable
X = data[['feature1', 'feature2', ...]] # Select relevant features as input variables
y = data['demand'] # Select the demand column as the target variable
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize and train the model
model = <Model>() # Initialize the machine learning model (e.g., Linear Regression, Random Forest, etc.)
model.fit(X_train, y_train) # Train the model on the training data
# Make predictions on the test data
predictions = model.predict(X_test)
匯入所有庫,例如matplotlib、numpy、scikit-learn、pandas等,以開始操作。
然後,使用稱為pandas DataFrame的表格資料結構填充歷史銷售資料。
為了準備資料進行分析,我們將執行包括處理缺失值、更改資料型別、處理分類變數以及將資料分成訓練集和測試集的操作。
我們從資料中提取必要的特徵,以便機器學習模型能夠識別模式並做出準確的預測。這可能包括新增滯後項、對多個時間段收集的資料進行平均,或考慮外部變數(如假期)。
我們將選擇一個合適的機器學習模型,使用訓練資料對其進行訓練,並使用相關的評估指標(如均方誤差(MSE)或均方根誤差(RMSE))評估演算法的效能。
演算法
步驟1 - 載入歷史銷售資料。
步驟2 - 透過處理缺失值、更改資料型別以及將資料分成訓練集和測試集來預處理資料。
步驟3 - 透過提取相關特徵執行特徵工程。
步驟4 - 使用訓練資料,從機器學習中選擇合適的演算法。
步驟5 - 利用合適的指標評估模型的效能,並根據新資料生成預測。
方法
方法1 - 使用ARIMA進行時間序列預測
方法2 - 使用隨機森林迴歸進行監督學習。
方法1:使用ARIMA進行時間序列預測
示例
# Import libraries
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
data = pd.read_csv('sales_data.csv')
# Preprocess data (if required)
# Split into training and testing sets
train_data = data[:int(0.8 * len(data))]
test_data = data[int(0.8 * len(data)):]
# Fit ARIMA model
model = ARIMA(train_data, order=(p, d, q)).fit()
# Make predictions
predictions = model.predict(start=len(train_data), end=len(train_data) + len(test_data) - 1)
# Evaluate model
mse = ((predictions - test_data) ** 2).mean()
輸出
Actual Predicted Day 1 100 105 Day 2 150 140 Day 3 120 125 Day 4 180 170 Day 5 90 95
在本例中,我們擁有特定產品在五天內(以單位計)的實際需求資料。ARIMA模型使用歷史資料進行訓練,用於生成預測值。
該表顯示了每日的實際需求資料以及相應的ARIMA模型預測。我們可以看到,該模型正確預測了需求的總體模式並提供了合理的預測。但是,由於預測未來需求本質上具有挑戰性,因此實際資料和預測資料之間可能存在一些差異或不一致。
方法2:使用隨機森林迴歸進行監督學習
示例
# Import libraries
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
data = pd.read_csv('sales_data.csv')
# Preprocess data (if required)
# Split into features and target
X = data.drop('demand', axis=1)
y = data['demand']
# Split into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Initialize and train the Random Forest regressor
model = RandomForestRegressor(n_estimators=100)
model.fit(X_train, y_train)
# Make predictions
predictions = model.predict(X_test)
# Evaluate model
mse = mean_squared_error(y_test, predictions)
輸出
Actual Predicted Day 1 100 95 Day 2 150 155 Day 3 120 115 Day 4 180 175 Day 5 90 85
在上例中,它顯示了特定產品在五天內(以單位計)的實際需求資料。預測值是使用方法2生成的,即使用歷史資料訓練的隨機森林迴歸模型。
對於每一天,該表都顯示了實際需求水平以及隨機森林迴歸模型預測的值。我們可以看到,該模型生成的預測主要正確且與觀察到的需求非常接近。但是,實際資料和預測資料可能略有不同或變化,其原因在於預測未來需求可能會受到多種因素和原因的影響。
結論
對於企業或公司來說,準確性對於成功滿足客戶需求或截止日期以及最佳化其庫存水平至關重要。為此,庫存需求預測必不可少。企業可以透過利用機器學習技術來提高客戶或顧客滿意度,降低成本並改進其流程。這就像預測或瞭解我們需要多少東西或物品一樣,非常棒。我們可以預測未來並確保有足夠的玩具。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP