首页 > 其他分享 >轻松上手:PyTorch 预测书店销售趋势

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

时间:2024-01-12 11:37:25浏览次数:32  
标签:书店 torch sales 轻松 PyTorch normalized income total mean

P1

让我们先来设一个场景:

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

[45、55、30]

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

小说

科学

艺术

第一天

10

20

30

第二天

15

25

35

第三天

5

10

15


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

时间\数据

销量

访客数

收入

小说

科学

艺术

小说

科学

艺术

小说

科学

艺术

早上

10

20

30

15

25

35

100

200

300

中午

12

22

32

18

28

38

120

220

320

晚上

8

18

28

13

23

33

80

180

280


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

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

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

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

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

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

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

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

P2

直接上手,不多BB ~~

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

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

运行:

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

轻松上手:PyTorch 预测书店销售趋势_数据_02

上述代码先导入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 预测书店销售趋势_Python_03

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

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

P3

除此之外建议:

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

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

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

一直 next ,然后下载完成。

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

配置环境变量:

轻松上手:PyTorch 预测书店销售趋势_数据_07

然后就妥了,打开:Anaconda Navigator

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

OK,以上便是本篇分享。点赞关注评论,为好文助力

标签:书店,torch,sales,轻松,PyTorch,normalized,income,total,mean
From: https://blog.51cto.com/u_13961087/9212540

相关文章

  • CHATGPT如何读音正确?学会这几招,轻松掌握
    CHATGPT的读音为"Chat"和"GPT"两部分组成。"Chat"读作/ʧæt/,类似于英语单词"chat"的发音。"GPT"分别代表"GenerativePre-trainedTransformer"的首字母缩写,读作/ˌdʒiːpiːˈtiː/。将这两个部分连起来念,即为CHATGPT的正确读音。 要掌握这个读音,可以先分别练习"Chat"和&q......
  • 11-K8 Service:轻松搞定服务发现和负载均衡 (copy)
    经过前面几节课的学习,我们已经可以发布高可用的业务了,通过PV持久化地保存数据,通过Deployment或Statefulset这类工作负载来管理多实例,从而保证服务的高可用。想一想,这个时候如果有别的应用来访问我们的服务的话,该怎么办呢?直接访问后端的PodIP吗?不,这里我们还需要做服务发现(S......
  • 使用KubeSphere轻松部署Bookinfo应用
    Bookinfo应用这个示例部署了一个用于演示多种Istio特性的应用,该应用由四个单独的微服务构成。如安装了Istio,说明已安装Bookinfo。这个应用模仿在线书店的一个分类,显示一本书的信息。页面上会显示一本书的描述,书籍的细节(ISBN、页数等),及书评。Bookinfo应用分为四个单独的......
  • PyTorch项目源码学习(2)——Tensor代码结构初步学习
    PyTorch版本:1.10.0TensorTensor是Pytorch项目较为重要的一部分,其中的主要功能如存储,运算由C++和CUDA实现,本文主要从前端开始探索学习Tensor的代码结构。结构探索PyTorch前端位于torch目录下,从_tensor.py可以找到Tensor的python定义,可以看到其继承自torch._C._Tensorbase而Te......
  • 善于善行  轻松获收入赢好礼
    每人家里都有许多的旧物,随着物品不断更新,旧物不断堆积。据调查询问了解到,每10人中就有一半人需回收处理。针对有回收需求的居民,“善于善行小程序”开展“区域化”上门回收服务。不仅解决了个人资源过剩问题,也提升了资源再利用效率。任何人通过善于善行小程序无论卖出多少旧物,都可以......
  • 轻松拥有虾皮买手号,使用Shopee买家通系统注册简单高效
    近期,有不少虾皮买手用户分享了他们使用Shopee买家通系统进行自动化注册的愉快经历。这款软件目前支持菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家,为用户提供了更便捷的注册方式。首先,用户需要准备一个能够接收短信的手机号。由于虾皮买家号目前基本上都是通过手机号......
  • Shopee买家通系统:轻松获取虾皮买手号的智能利器
    近来,有一款强大的软件引起了广泛关注,它就是Shopee买家通系统,为用户提供了自动化注册虾皮买手号的便捷途径。目前,该软件已覆盖菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家,为用户提供更广泛的服务。软件注册流程极为简单,虾皮买家号目前基本上都是通过手机号注册的,因此......
  • Shopee买家通系统助力虾皮买手号轻松获取
    Shopee买家通系统可以进行虾皮买手号的全自动注册。这款先进的软件目前覆盖了菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家,为用户提供了便捷、高效的注册途径。想要注册虾皮买家号号,首先需要准备一个支持接收短信的手机号。因为虾皮买家号注册主要通过手机号完成,因此......
  • 速卖通跨境智星:解决IP及环境问题,实现批量注册轻松搞定
    如果想要注册大批量的速卖通买家号,关键问题之一就是IP及浏览环境的管理。为了确保每个账号都能独立运行,使用独立的IP是必不可少的。近期,速卖通跨境智星备受关注,支持绑定代理IP,并内置反指纹技术,为用户提供了解决IP及环境问题的便捷途径。首先,使用代理IP可以模拟国外的运行环境,使每个......
  • PyTorch 基础篇(2):线性回归(Linear Regression)
    #包importtorchimporttorch.nnasnnimportnumpyasnpimportmatplotlib.pyplotasplt#超参数设置input_size=1output_size=1num_epochs=60learning_rate=0.001#Toydataset#玩具资料:小数据集x_train=np.array([[3.3],[4.4],[5.5],[6.71],[......