前言
大家好 , 我是浪遏 , 今天学习黄佳老师的 AI 课程 , 受益良多 , 和大家一起分享 。
想直接复现的倔友 ,可移至文末 , 有在 Notebook 的全部截图 , 数据样本可在文中 gitee 地址获取
我将从需求出发 , 而不是一上来就开始思想绑架 , 告诉你这段代码干啥 ?
不明白需求 , 小白可能只看到代码(我的代码也只是调包调参,没啥看的🤡) , 所以我的文章将从需求出发 , 之后先思考如何实现 , 在给出代码 。防止大家关注点在代码上😁 , 同时也在训练我自己的思考能力 , 远离成为调包、调参侠🤡
需求分析
随着抖音"病毒式"的传播 , 现在已经是全民刷抖音的时代了 , 于是 , 短视频运营商就面临着这样的问题 :
- 如何分析出数据之间的关系 ?
- 比如某些变量是否具有正相关
- 如何对数据进行预测 , 将未来趋势可视化 ?
- 比如将数据放入坐标系 , 形成散点图 , 之后用线性回归方程去匹配
- 如此 , 你高中的数学题 , 在大学就真真切切的实现啦 🤡
- 甚至我们可不可以进行数据训练 , 最后将训练的数据与预测的数据进行对比 ?
- 评估模型的训练质量 , 看看训练的模型可不可靠 ?
综合以上分析 , 我们清楚 , 我们需要干两件事情
- 数据预测 | 数据分析及数据可视化
- 数据训练 | 结合数据对训练的模型打分
请明确这两件事情 , 无论后面有多少代码 , 都在干这两件事情 , 不要一入代码深似海
前置准备
开发环境准备
结合我们的需求 , 我们需要实现数据预测 和数据训练 , 很显然本地配置环境很复杂 ,
且模型训练对 算力 要求比较高 , 我们本地的电脑带不动 , 硬上的话可能卡成 PPT
于是我采取我上次学习的魔搭社区开发环境 , 原因如下:
- 阿里提供了虚拟机 , 环境已经配好 ,开箱即用
- 提供python + ai机器学习环境
- 免费🤡
我使用魔搭社区提供的如下环境 :
关于魔搭社区的使用 , 可以移步我的这篇文章 , 里面详细展示了魔搭社区的使用方法 : 开箱即用的LLM,遥遥领先!!! --魔搭社区超级详细教程前言 今天搞搞魔搭社区,涉及 LLM (大语言模型) , 而基 - 掘金 (juejin.cn)
你还可以学到 , 如何实现情感分析 ~
数据采集
我将使用通过后台导出 的 csv 文件 , 对 转发量 品类热度 流量推送 成交额 相关数据处理
CSV(Comma-Separated Values)是一种以纯文本形式存储表格数据的文件格式,常用于数据交换和导入导出。
我们只研究转发量与成交额之间的关系
数据全貌如下 :
CSV 文件可上我的 gitee 上取 : gitee.com/luli1314520...
将 CSV 文件上传至 Notebook
前置准备好 , 二话不说就开干 !!!
数据预测
实现数据预测关注以下两步
- 数据分析
- 使用 pandas 库
- 数据可视化
- 使用matplotlib 中的 pyplot 库
1.首先使用 pandas 库 , 读取文件
python
# python 模块引入
# python 最流行的数据分析库
import pandas as pd
# js 异步的 IO 操作
# python 同步
df_ads = pd.read_csv("直播带货.csv")
# 数据样本的尺寸
# print(df_ads.size)
# 显示前10条 , head()默认指定数据的前5条
df_ads.head(10)
2.使用matplotlib库, 数据可视化
python
# 数据可视化
import matplotlib.pyplot as plt
# 调用plot函数 , 传入自变量df_ads['转发量'],传入因变量df_ads['成交额'],散点的颜色(红色),图例(data dot)
plt.plot(df_ads['转发量'], df_ads['成交额'], 'r.', label='data dot')
# 设置x轴标签
plt.xlabel('shares')
# 设置y轴标签
plt.ylabel('sales')
# 显示图例: data dot
plt.legend()
# 展示图形
plt.show()
根据高中所学 , 我们应该根据图的走势 , 来选择合适的方程来模拟 , 从图上可以看出数据呈现正相关 ,
所以我们才会选用 y = ax + b 线性函数 , 使用最小二乘法等来匹配上面的散列图 , 我们高中不也是这样的吗? 只不过在大学这个可以实际的做出来 。
数据训练
为了不晕掉 , 我把我的思路逻辑展现在这里:
实现数据训练的思路
- 使用机器学习库 : sklearn
- 数据分类
- 特征数据 x (去除表中的"成交额"一列)
- 目标数据 y (表中的"成交额"一列)
- 并将上面的数据按指定比例分为
- 测试集 20% (x_test , y_test)
- 训练集 80% (x_train , y_train)
- 数据训练 : 采用LinearRegression
- 一个线性回归算法的模型
- 模型测评
- 数据训练后 , 对模型预测进行打分 , 得分理想 , 进行下一步
- 得分不理想 , 更换数据再次训练 , 或者更换模型(我们思路是基于模型训练模型)
- 数据可视化
- 可视化为散列图
- 使用线性回归方程拟合散列图
- 什么是sklearn ?
sklearn.linear_model
是Python中Scikit-learn库下的一个模块,它提供了多种线性模型相关的类和工具,涵盖了像线性回归(如LinearRegression
)、岭回归(Ridge
)、套索回归(Lasso
)等常见线性模型,可用于解决回归分析问题,能进行模型的创建、训练、预测以及对模型参数进行调整等一系列操作,在数据分析、机器学习领域应用广泛,助力挖掘数据中的线性关系以及完成预测任务。
- 数据为什么要分为测试集合训练集 ?
模型训练的思路之一就是 , 一定量数据进行训练 ,一部分的数据进行测试
- 使用机器学习库
python
#数据训练
from sklearn.linear_model import LinearRegression
# 线性回归算法的模型实例
model = LinearRegression()
- 数据分类
python
"""
80% 的数据用于训练 ,得到线性回归方程 : y = ax + b
20% 的数据用于测试 ,对得到的线性回归方程进行测试 :test_size=0.2
如果数据得分在90%以上则通过 , 否则不通过
使用了 Scikit-learn 库中的 train_test_split 函数,
它的作用是将数据集 x(特征数据)和 y(目标数据)按照指定的比例(这里测试集占比 test_size 为 0.2,即 20%)
随机划分为训练集(x_train、y_train)和测试集(x_test、y_test),
同时通过设置 random_state 为 0 保证每次划分的随机性是可复现的,
便于后续进行模型训练、评估等操作。
"""
from sklearn.model_selection import train_test_split
# train_test_split 将数据分为训练数据 ,测试部分
x_train,x_test,y_train,y_test = train_test_split(x , y,test_size=0.2,random_state=0)
- 数据训练
python
# 训练 y = ax + b
model.fit(x_train,y_train)
- 模型测评
python
# 大模型自己打分 , 拿到预期的结果数据
# 按照测试数据
y_pred = model.predict(x_test)
python
"""
对成交额实际值与成交额预测值进行对比
"""
#拷贝测试数据集
df_ads_pred = x_test.copy()
# 成交额实际值
df_ads_pred['成交额实际值'] = y_test
# 得到 成交额预测值
df_ads_pred['成交额预测值'] = y_pred
df_ads_pred
对比结果如下 :
进行打分
python
# 数据量较小 , 得分较低
print("线性回归预测集评分" , model.score(x_test,y_test))
# 数据量较大 , 得分较高
print("线性回归训练集评分" , model.score(x_train,y_train))
# 数据量越大 ,得分越高 , 说明了线性回归模型适合采用
5.进行数据可视化
python
"""
探讨转发量和成交额关系
"""
x = df_ads[['转发量']]
x.head()
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)
# 使用画布 大小是10 x 6
plt.figure(figsize=(10,6))
# 散点图
plt.scatter(x_test,y_test,color='blue',label="true value")
# 线性方程
plt.plot(x_test,y_pred,color='red',linewidth=2,label="presict value")
# 设置x轴标签
plt.xlabel("shares")
# 设置y轴标签
plt.ylabel("selles")
# 设置标题
plt.title('shares VS selles')
plt.legend()
# 使用网格
plt.grid(True)
plt.show()
总结
本文实验重点体验
- 数据分析 ,
- 数据可视化
- 数据训练
的思考过程 , 我们可以了解简答的模型训练是如何实现的 , 至于代码只是在调包调参 , 重点理解数据训练的流程 , 而我的这次分享 , 在兼顾理论的同时 , 也在魔搭社区做到了落地. 欢迎大家复现 .
下次我将分享更多 AI 机器学习相关的知识 , 点赞收藏+评论~
实验全貌
以下图片是在魔搭社区 Notebook 上的全部代码实验截图 , 方便倔友对代码进行复现