AI应用实战课学习总结(3)预测带货销售额
大家好,我是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》(图书)
AI应用实战课学习总结(3)预测带货销售额的更多相关文章
- DDD实战课--学习笔记
目录 学好了DDD,你能做什么? 领域驱动设计:微服务设计为什么要选择DDD? 领域.子域.核心域.通用域和支撑域:傻傻分不清? 限界上下文:定义领域边界的利器 实体和值对象:从领域模型的基础单元看系 ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- 《机器学习实战》学习笔记第九章 —— 决策树之CART算法
相关博文: <机器学习实战>学习笔记第三章 —— 决策树 主要内容: 一.CART算法简介 二.分类树 三.回归树 四.构建回归树 五.回归树的剪枝 六.模型树 七.树回归与标准回归的比较 ...
- AI面试必备/深度学习100问1-50题答案解析
AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习 转载:https://blog.csdn.net ...
- [AI开发]将深度学习技术应用到实际项目
本文介绍如何将基于深度学习的目标检测算法应用到具体的项目开发中,体现深度学习技术在实际生产中的价值,算是AI算法的一个落地实现.本文算法部分可以参见前面几篇博客: [AI开发]Python+Tenso ...
- Python第十课学习
Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...
- Python第九课学习
Python第九课学习 数据结构: 深浅拷贝 集合set 函数: 概念 创建 参数 return 定义域 www.cnblogs.com/yuanchenqi/articles/5782764.htm ...
- Python第八课学习
Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...
- 用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 http://phunter.farbox.com/post/mxnet-tutorial1 用MXnet实战深度学 ...
随机推荐
- Windows 延缓写入失败及解决方法
场景重现 某天系统弹出警告:某盘符延缓写入失败 解决办法 [Win + R]或手搓打开cmd.exe,键入chkdsk: 然后等待校检完成. 完成之后到警告提示对应的盘符下进行查错并修复 然后等待检查 ...
- 《HarmonyOS Next开发进阶:打造功能完备的Todo应用华章》
章节 6:日期选择器与日期处理 目标 学习如何使用DatePicker组件. 理解日期格式化和日期计算. 内容 日期选择器基础 使用DatePicker组件. 处理日期选择事件. 日期格式化 格式化日 ...
- javaWeb之路径
一. 路径写法: 1. 路径分类 a. 相对路径:通过相对路径不可以确定唯一资源 * 如:./index.html * 不以/开头,以.开头路径 * 规则:找到当前资源和目标资源之间的相对位置关系 * ...
- 一文速通 Python 并行计算:07 Python 多线程编程-线程池的使用和多线程的性能评估
一文速通 Python 并行计算:07 Python 多线程编程-线程池的使用和多线程的性能评估 摘要: 本文介绍了 Python 线程池(ThreadPoolExecutor)的使用方法,包括线程池 ...
- Rust实战系列-深入理解数据
本文是<Rust in action>学习总结系列的第五部分,更多内容请看已发布文章: 一.Rust实战系列-Rust介绍 二.Rust实战系列-基本语法 三.Rust实战系列-复合数据类 ...
- 支持命令行输入中文(例如redis-cli输入中文)
修改 cmd 控制台默认代码页编码的几种方法[GBK.UTF-8]_FKNIGHT 的博客-CSDN博客_修改cmd编码 1.进入redis-cli.exe所在文件夹 2.在路径栏输入cmd回车 3. ...
- 【记录】OJ|区间DP|石子合并(环形)
1. 题干 描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出一个算法,计算出将N堆石子 ...
- Map延伸工具类之“根据value值得到map的key值”“根据value值得到map的keys值”
Map延伸工具类 /** * 集合类型转换 * */ public class CollectionUtil { /** * 根据value值得到map的key值 * @author wzw * * ...
- 正点原子ALPHA开发板使用4.3寸触摸屏LCD驱动实验显示不正常
显示问题 裸机开发时,驱动教程的PDF里给了4.3寸LCD屏幕的设置参数.如下图所示: 但是按照这个设置,编写设备树dts文件,下载到开发板里,却出现了显示异常,具体来说就是帧率不对,图和字都是歪斜的 ...
- P2779 [AHOI2016初中组] 黑白序列题解
题意: 小可可准备了一个未完成的黑白序列,用 B 和 W 表示黑色和白色,用 ? 表示尚未确定. 他希望知道一共有多少种不同的方法,在决定了每一个 ? 位置的颜色后可以得到一个小雪喜欢的黑白序列. 其 ...