import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression

# 读取数据
data = pd.read_csv('test.csv')

# 数据预处理,筛选出2020年7月1-2日的数据
start_date = '2020-07-01'
end_date = '2020-07-02'
selected_data = data[(data['销售日期'] >= start_date) & (data['销售日期'] <= end_date)]

# 统计每个单品的销售量和销售单价
sales_data = selected_data.groupby('单品编码').agg({'销量(千克)': 'sum', '销售单价(元/千克)': 'mean'}).reset_index()

# 计算每个单品的损耗率和批发价格
loss_rate_data = selected_data.groupby('单品编码').agg({'单品损耗率': 'mean', '批发价格': 'mean'}).reset_index()

# 合并数据
merged_data = pd.merge(sales_data, loss_rate_data, on='单品编码')

# 构建特征和标签
X = merged_data[['销量(千克)']]
y = merged_data['销售单价(元/千克)']

# 使用线性回归模型进行预测
model = LinearRegression()
model.fit(X, y)

# 预测8月1日的每个单品销售单价
predicted_prices = model.predict(X)  # 使用所有数据进行预测

# 计算每个单品的补货量
n = merged_data.shape[0]  # 可售单品数量
min_order_quantity = 2.5  # 单品订购量至少为2.5千克
max_order_quantity = 10  # 每天最多进货10个单品
order_quantities = np.zeros(n)
for i in range(n):
    order_quantities[i] = max(min_order_quantity, min(max_order_quantity, predicted_prices[i]))

# 计算商超的收益
profits = np.zeros(n)
for i in range(n):
    profits[i] = order_quantities[i] * predicted_prices[i] * (1 - merged_data['单品损耗率'][i]) - order_quantities[i] * merged_data['批发价格'][i]

# 输出补货量和定价策略
for i in range(n):
    print('单品编码:', merged_data['单品编码'][i])
    print('补货量:', order_quantities[i])
    print('定价策略:', predicted_prices[i])
    print('收益:', profits[i])
    print('---')

代码说明:

  1. 读取数据并进行预处理,筛选出指定日期的销售数据。
  2. 统计每个单品的销售量和销售单价,以及损耗率和批发价格。
  3. 使用线性回归模型,根据历史数据预测8月1日的每个单品的销售单价。
  4. 根据预测的销售单价,计算每个单品的补货量,并设定最低和最高订购量限制。
  5. 计算每个单品的收益,并输出补货量、定价策略和收益。

改进内容:

  1. 将预测的销售单价改为一个长度为n的数组,与补货量数组的长度一致,解决IndexError错误。
  2. 修改代码注释,使其更加清晰易懂。

注意:

  • 该代码使用的是简单的线性回归模型,可能存在预测误差,实际应用中需要根据具体情况选择合适的模型。
  • 该代码假设所有单品都可售,实际情况可能存在不可售的单品。
  • 该代码没有考虑其他因素,例如库存、促销等,实际应用中需要根据具体情况进行调整。
基于线性回归模型的商超补货量和定价策略预测

原文地址: http://www.cveoy.top/t/topic/eh5J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录