首页 > 其他分享 >AI应用实战课学习总结(3)预测带货销售额

AI应用实战课学习总结(3)预测带货销售额

时间:2024-12-30 19:18:54浏览次数:1  
标签:实战 plt ads AI 模型 df train 带货 test

大家好,我是Edison。

最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。

今天是我们的第3站,了解下AI项目实践的5大环节,并通过一个预测直播带货销售额的案例来感受下。

AI项目的5大环节

对于一个AI项目的实战大概有以下5大环节:

  • 问题定义:需要明确定义需要解决什么问题,然后如何去衡量这个问题。

    • 比如:现状是啥?目标是啥?谁会受益?如何解决?

  • 数据准备:围绕着要解决的问题去准备数据和做特征工程,数据是机器学习的燃料。

    • 比如:数据收集、清洗、转换、特征选择、特征工程

  • 选择模型:根据问题和数据选择合适的机器学习模型,即确定算法以及算法中的假设函数和损失函数的过程。

    • 比如:回归 or 分类?决策树?随机森林?神经网络?大语言模型?

  • 训练调参:在模型内部调整它的参数,让这个模型适应我们的具体问题和具体数据。

    • 比如:关注模型的拟合程度:过拟合 or 刚刚好 or 欠拟合

  • 评估优化:模型的上限不是一蹴而就的,它需要一个反复的循环迭代,可能需要多种算法和数据相互比较才能得到最好的解决方案。比如:可以关注R平方分数、分类准确率等。

预测直播带货销售额

Step1 问题定义

问题背景:某直播带货平台,已知转发量、流量指数(平台推广力度)、商品类型。

问题定义:如何根据历史数据,预估本次直播带货成交量?

Step2 数据准备

假设我们有一些模拟出来的数据集如下:

将这个模拟数据集读入后,可以发现存在一个转发量和成交额存在一个线性关系:当 一个商品被转发次数越多,其成交额也就越多。

Step3 选择模型

由于这个问题很简单,属于一个线性分布的问题,所以直接选择线性回归算法即可。杀鸡焉用牛刀,软件开发中的KISS原则,在AI项目中依然适用!

Step4 训练模型

用训练集数据训练模型,拟合函数,然后确定线性回归函数的参数(也就是y=ax+b中的a和b,即斜率和截距)。

Step5 评估结果

当拿到线性函数之后,得到训练集和测试集的R平方分数,越接近于1结果越好。

Python代码实现

导入基本的数据处理工具

# 导入最基本的数据处理工具
import pandas as pd # 导入Pandas数据处理工具包
df_ads = pd.read_csv('demo-data.csv') # 读入数据
df_ads.head(10) # 显示前几行数据

显示的前几行数据如下图所示:

数据可视化辅助分析

# 导入数据可视化所需要的库
import matplotlib.pyplot as plt #Matplotlib – Python画图工具库
import seaborn as sns #Seaborn – 统计学数据可视化工具库
plt.plot(df_ads['转发量'],df_ads['成交额'],'r.', label='数据点') # 用matplotlib.pyplot的plot方法显示散点图
plt.xlabel('转发量') # x轴Label
plt.ylabel('成交额') # y轴Label
plt.legend() # 显示图例
plt.show() # 显示绘图结果

得到的散点图如下所示:

 特征选择

X = df_ads.drop(['成交额'],axis=1) # 特征集,Drop掉标签字段
y = df_ads.成交额 # 标签集
X.head() # 显示前几行特征集数据
y.head() # 显示前几行标签集数据

数据集切分训练集和测试集

# 将数据集进行80%(训练集)和20%(验证集)的分割
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, 
   test_size=0.2, random_state=0)

导入算法模型并训练模型

from sklearn.linear_model import LinearRegression # 导入线性回归算法模型
model = LinearRegression() # 使用线性回归算法创建模型

model.fit(X_train, y_train) # 用训练集数据,训练机器,拟合函数,确定参数

预测测试集Y值并显示预测值

y_pred = model.predict(X_test) #预测测试集的Y值

df_ads_pred = X_test.copy() #测试集特征数据
df_ads_pred['成交额真值'] = y_test #测试集标签真值
df_ads_pred['成交额预测值'] = y_pred #测试集标签预测值
df_ads_pred #显示数据

可以看到,成交额真实数值(位于测试集中)高一些,模型预测出来的预测值也会高一些,有的差的多一些,有的差的少一些。

评估模型的评分

print("线性回归预测集评分:", model.score(X_test, y_test)) #评估模型
print("线性回归训练集评分:", model.score(X_train, y_train)) #训练集评分

得到的评分信息如下:

线性回归预测集评分: 0.662399563560639

线性回归训练集评分: 0.7293166018868376

可以看到,该模型在训练集上的评分要高一些,而在预测集上的评分要低一些,不过也差得不是太多。

至此,这个项目的模型就算初步训练完成了。

最后,如果我们想要了解这个模型到底长什么样(即线性函数长啥样),也可以通过下面的代码来绘制预测直线,这样就能在图中看到一个形象的感受:

# 分离特征和标签
X = df_ads[['转发量']]
y = df_ads.成交额

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 使用线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 绘制预测直线
plt.figure(figsize=(10, 6))
plt.scatter(X_test, y_test, color='blue', label='真实值') # 画散点图
plt.plot(X_test, y_pred, color='red', linewidth=2, label='预测直线') # 画预测线
plt.xlabel('转发量')
plt.ylabel('成交额')
plt.title('转发量 vs 成交额')
plt.legend()
plt.grid(True)
plt.show()

最终得到的预测直线如下图所示:

小结

本文快速了解了AI项目实战的五大环节,并通过一个预测直播带货销售额的案例来感受了一下。

推荐学习

黄佳,《AI应用实战课》(课程)

黄佳,《图解GPT:大模型是如何构建的》(图书)

黄佳,《动手做AI Agent》(图书)

 

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

标签:实战,plt,ads,AI,模型,df,train,带货,test
From: https://www.cnblogs.com/edisonchou/p/18642204/ai-in-practice-notes-session3

相关文章

  • Web3.0热门领域:NFT项目实战解析
    背景与概述Web3.0正在引领互联网的下一次革命,其中NFT(Non-FungibleToken)作为热门领域之一,以其独特的资产标识和不可替代性,在数字艺术品、游戏、音乐、票务等领域崭露头角。开发一个完整的NFT项目需要从智能合约设计入手,结合NFT项目开发的前端实现,以及利用Web3开发生态的......
  • 使用 Azure Cosmos DB Mongo vCore 进行向量搜索的实战指南
    #AzureCosmosDBMongovCore实战指南:创建和查询向量搜索索引老铁们,今天我来给大家介绍如何利用AzureCosmosDB的MongovCore实现向量数据库功能。具体来说,我们要在集合中存储文档,创建索引,并使用近似最近邻算法(如余弦距离、欧几里得距离和内积)进行向量搜索查询。......
  • Chain-of-Exemplar: Enhancing Distractor Generation for Multimodal Educational Qu
    题目样本链:增强干扰项生成以实现多模式教育问题生成论文地址:https://aclanthology.org/2024.acl-long.432/项目地址:https://github.com/Luohh5/Chain-of-Exemplar摘要    多项选择题(MCQ)对于加强概念学习和学生参与度以实现教育目的非常重要。尽管教育内容具......
  • C# async void 方法中使用await不会异步等待
    asyncvoid通常用于事件处理程序或其他不需要返回值的情况,好像是一个为了解决历史遗留问题创建的机制,非必要情况下,不建议使用asyncvoid,推荐使用asyncTask替代asyncvoid和主线程貌似是一个线程,如果asyncvoid中存在异步等待时,执行到await时,会在等待的同时切换到其他线程(主线......
  • 靠AI赚45W?这4个AI变现赛道,普通人一定要知道!
    若要提炼2024年的年度核心词,AI必定位列其中。从AI数字人、AI汽车到AI医疗,AI已渗透到生活的方方面面。或许有人会想:“AI再厉害,和我有什么关系?”但如果告诉你,掌握AI能帮你赚钱,你是否愿意一听?不信?下面就分享4个AI变现赛道,看看首批学会AI的人如何掘得第一桶金。更多实操教......
  • 利用 ChatFriendli 和 LangChain 打造高性能对话 AI 应用
    老铁们,今天我们一起来看看如何快速上手GoogleAI的聊天模型,尤其是如何通过langchain-google-genai这个包来充分利用Google的强大AI能力。说白了,这个技术点其实不难,咱们一步一步来。技术背景介绍随着AI技术的飞速发展,Google推出了一系列强大的聊天模型(如Gemini),它们可以通......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着社会的发展,社会的各行各业都在利用信息时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。二手车交易平台,主要的模块包括用户后台:首页、车辆评估、我要卖车、卖车订单、试驾申请、购车订单;管理员功能包括:首页、轮播图、公告信息、资源管理(资讯列......
  • RAG实践 - AI 知识库问答功能的建设
    最近在工作中构建了一套自动的基于文档中心为数据集构建知识库AI问答的系统,来提升用户体验和技术支持效率,分享一下在实现过程中的技术选型和架构设计。背景先说下背景,我们公司的产品FinClip是做小程序全套解决方案的。我们有一个文档中心https://finclip.com/mop/document/......
  • 杨立昆的洞见:AI 安全的关键不在于限制,而在于精巧的设计
    最近,人工智能领域的领军人物、图灵奖得主杨立昆(YannLeCun)在接受约翰霍普金斯大学和VoxMedia联合播客"OnwithKaraSwisher"的采访时,提出了一个极具价值的观点:“AI的安全性在于设计,而不是限制。”https://weibo.com/1233486457/P77gm41G3#commenthttps://www.youtube.com......
  • [笔记]Airflow入门
    前言Airflow入门教程正文简介任务管理、调度、监控工作流平台。基于DAG(有向无环图)的任务管理系统。基本架构组件scheduler:以有向无环图(dag)的形式创建任务工作流,根据用户的配置将任务定时/定期进行调度worker:任务的执行单元,worker会从任务队列当中拉取任务并运行......