小白也可以直播预测 😱| 数据分析、可视化、数据训练 | 魔搭社区🤔

前言

大家好 , 我是浪遏 , 今天学习黄佳老师的 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
    • 一个线性回归算法的模型
  • 模型测评
    • 数据训练后 , 对模型预测进行打分 , 得分理想 , 进行下一步
    • 得分不理想 , 更换数据再次训练 , 或者更换模型(我们思路是基于模型训练模型)
  • 数据可视化
    • 可视化为散列图
    • 使用线性回归方程拟合散列图
  1. 什么是sklearn ?

sklearn.linear_model 是Python中Scikit-learn库下的一个模块,它提供了多种线性模型相关的类和工具,涵盖了像线性回归(如 LinearRegression)、岭回归(Ridge)、套索回归(Lasso)等常见线性模型,可用于解决回归分析问题,能进行模型的创建、训练、预测以及对模型参数进行调整等一系列操作,在数据分析、机器学习领域应用广泛,助力挖掘数据中的线性关系以及完成预测任务。

  1. 数据为什么要分为测试集合训练集 ?

模型训练的思路之一就是 , 一定量数据进行训练 ,一部分的数据进行测试

  1. 使用机器学习库
python 复制代码
#数据训练
from sklearn.linear_model import LinearRegression

# 线性回归算法的模型实例
model = LinearRegression()
  1. 数据分类
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)
  1. 数据训练
python 复制代码
# 训练 y = ax + b 
model.fit(x_train,y_train)
  1. 模型测评
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 上的全部代码实验截图 , 方便倔友对代码进行复现

相关推荐
xjt_09011 分钟前
浅析Web存储系统
前端
foxhuli22939 分钟前
禁止ifrmare标签上的文件,实现自动下载功能,并且隐藏工具栏
前端
青皮桔1 小时前
CSS实现百分比水柱图
前端·css
DataGear1 小时前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
影子信息1 小时前
vue 前端动态导入文件 import.meta.glob
前端·javascript·vue.js
青阳流月1 小时前
1.vue权衡的艺术
前端·vue.js·开源
样子20181 小时前
Vue3 之dialog弹框简单制作
前端·javascript·vue.js·前端框架·ecmascript
kevin_水滴石穿1 小时前
Vue 中报错 TypeError: crypto$2.getRandomValues is not a function
前端·javascript·vue.js
孤水寒月2 小时前
给自己网站增加一个免费的AI助手,纯HTML
前端·人工智能·html
CoderLiu2 小时前
用这个MCP,只给大模型一个figma链接就能直接导出图片,还能自动压缩上传?
前端·llm·mcp