likes
comments
collection
share

轻松上手:PyTorch 预测书店销售趋势

作者站长头像
站长
· 阅读数 5

P1

让我们先来设一个场景:

你拥有一个书店,现在你要统计书店每天卖了多少本书,你可能写一个简单的列表来记录:

[45、55、30]

过了一段时间后,你还想分类记录每天不同类型的书销量如何,你可能记录如下:

小说科学艺术
第一天102030
第二天152535
第三天51015

又过了一段时间, 除了销量外,你还想进一步记录每天各阶段每个类型书的访客数、以及带来的收,这样表格记录就变得更加复杂了:

时间\数据销量访客数收入
小说科学艺术小说科学艺术小说科学艺术
早上102030152535100200300
中午122232182838120220320
晚上8182813233380180280

基于第一种场景,我们可以通过销量来预测未来门店书籍的销量;

基于第二种场景,我们可以根据不同书籍的销量对比,来对不同类型书籍作库存的管理和需求设计;

基于第三种场景,我们则能构建更多、更复杂的预测模型,比如:

  • 预测未来特定时间段某类型书的销售量/访客数/收入;
  • 分析不同类型的书是如何影响整体销售指标的;
  • 识别不同消费群体的购买习惯;
  • 根据销售数据向消费者推荐书籍;

是否还有更复杂的“表”、更复杂的统计场景呢??

当然,还能增加额外的维度:不同地区的书店、再细化书的类别、细化时间维度等等。

信息量太大了,以至于一般的计算可能无法满足了,这时,就需要用到 “深度学习”!!

其中,用来计算这些信息量的深度框架就是本篇的主角 —— PyTorch ~

P2

直接上手,不多BB ~~

查一下之前装的:Python,没问题,通过 pip 安装 torchvision

轻松上手:PyTorch 预测书店销售趋势

运行:

from __future__ import print_function
import torch
x= torch.rand(5,3)
print(x)

轻松上手:PyTorch 预测书店销售趋势

上述代码先导入PyTorch库,然后创建了一个5行3列的张量(或者称作矩阵)。

基于上述书店卖书的例子,举一个实践示例:

假设我们有过去五天每种书籍(小说、科学、艺术)的销售收入数据,现在将尝试预测第六天的总收入。

import torch
import torch.nn as nn
import torch.optim as optim

# 假设的历史销售数据(每天的收入:小说,科学,艺术)
past_sales_data = torch.tensor([
    [100, 200, 300],
    [110, 210, 310],
    [120, 220, 320],
    [130, 230, 330],
    [140, 240, 340],
], dtype=torch.float32)

# 标准化输入数据
mean = past_sales_data.mean(dim=0)
std = past_sales_data.std(dim=0)
normalized_sales_data = (past_sales_data - mean) / std

# 总收入(每天的总和)
total_income = past_sales_data.sum(axis=1)

# 标准化输出数据
mean_total_income = total_income.mean()
std_total_income = total_income.std()
normalized_total_income = (total_income - mean_total_income) / std_total_income

# 构建一个简单的线性模型
model = nn.Linear(3, 1)

# 损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
epochs = 1000
for epoch in range(epochs):
    # 预测
    predictions = model(normalized_sales_data)

    # 计算损失
    loss = criterion(predictions, normalized_total_income.unsqueeze(1))

    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

# 使用模型进行预测
# 假设第六天的销售数据
day_6_sales = torch.tensor([150, 250, 350], dtype=torch.float32)
# 对新数据进行与训练数据相同的标准化处理
normalized_day_6_sales = (day_6_sales - mean) / std
predicted_income_normalized = model(normalized_day_6_sales.unsqueeze(0))

# 反标准化预测结果以得到实际预测收入
predicted_income = predicted_income_normalized.item() * std_total_income + mean_total_income
print(f"预测的第六天总收入: {predicted_income:.2f}元")

运行结果:

轻松上手:PyTorch 预测书店销售趋势

如果报错:Error "Import Error: No module named numpy" on Windows,就是没装 numpy,安装即可。

轻松上手:PyTorch 预测书店销售趋势

P3

除此之外建议:

为了更好的处理Python版本问题、以及第三方包安装问题,这里推荐下载:

—— 先下载 Anaconda,地址:Anaconda3-5.1.0-Windows-x86_64.exe

轻松上手:PyTorch 预测书店销售趋势

一直 next ,然后下载完成。

轻松上手:PyTorch 预测书店销售趋势

配置环境变量:

轻松上手:PyTorch 预测书店销售趋势

然后就妥了,打开:Anaconda Navigator

轻松上手:PyTorch 预测书店销售趋势

转载自:https://juejin.cn/post/7322096880426598439
评论
请登录