引言
本次我们将使用一个简单的机器学习算法和技术,在魔搭社区上使用直播带货的数据来训练大模型,分析直播带货的增长趋势。
先看最后的结果图:
废话少说,那我们现在开始!!
魔搭社区
我们先来了解一下下面要使用到的魔搭社区 首页 · 魔搭社区
魔搭社区是中国的一个大型大模型交流平台,它允许用户免费上传和分享微调后的模型。对于想要探索深度学习或改进现有模型的研究者和开发者来说,这是一个宝贵的资源。魔搭社区还提供了阿里云虚拟机服务,配备Python + AI机器学习环境,使用户能够在云端执行复杂的计算任务,而无需担心本地计算机性能不足的问题。
Python与JavaScript比较
Python和JavaScript。虽然两者都是脚本语言,相比于其他语言要简单,但它们在并发处理方面存在差异。
Python倾向于同步执行代码,而JavaScript则支持异步操作,这使得JavaScript非常适合Web开发中需要快速响应用户交互的应用场景。而Python以其简洁性和强大的库生态系统而闻名,特别是在数据科学领域。
所以,我们在本次中使用Python来训练大模型。
准备工作
先登录魔搭社区,在tab栏中的模型库中,随便选择一个你需要的大模型。
在NoteBook快速开发中选择使用魔搭社区提供的免费实例。
使用CPU环境,启动一个实例,并点击查看NoteBook。
创建
NoteBook的Python3 .ipynb文件 并将直播带货.cvs数据文件导入。
可以在我的gitee仓库中获取直播带货数据,或者是你自己找一份你想要分析的数据直播带货.csv
代码开始
先来测试一下实例
读取csv文件
Pandas是Python的一个开源数据分析库,提供了高效的数据结构和数据分析工具。我们将使用read_csv()函数读取CSV数据文件,并利用head(n)方法查看前n行记录。
# python 中的模块引入
# python 最流行的 数据分析仓库
import pandas as pd
# 读取csv数据文件
df_ads = pd.read_csv("直播带货.csv")
# 数据样本的尺寸
# print(df_ads.size)
df_ads.head(10) # 读取前n条 默认5条
可以看到,使用了head(10)之后,数据只展示了10行。
绘制图表
Matplotlib是一个用于创建静态、动画和交互式可视化图表的Python绘图库。通过像plt.plot()这样的命令,我们可以绘制出具有不同样式标记的数据点,帮助他们直观地理解数据之间的关系。可以通过指定颜色('r')和形状('.')参数来定制图表上的每一个点,并添加图例标签以便于解释。
# 数据可视化
import matplotlib.pyplot as plt # 导入matplotlib库
# plot绘制图表
# 参数: x轴数据 y轴数据 颜色和形状 图例
plt.plot(df_ads['转发量'],df_ads['成交额'],'r.',label='data dot')
plt.xlabel('shares') # x轴标签
plt.ylabel('sales') # y轴标签
plt.legend() # 添加图例
plt.show() # 显示图形
这是我们csv文件中数据的分布情况,可以根据得到的结果再来理解一下各个参数的效果。
拆分影响因子和结果
我们分析直播带货的数据,在这里我把成交额作为结果,把转发量、品类热度、流量推送作为影响因子,分析它们之间的关系。所以,我们要把影响因子和结果分离开。
# drop 移除 成交额 这一列 作为结果
# 影响成交额的影响因子拿出来 去训练 (其他项对成交额结果的影响)
X = df_ads.drop(["成交额"],axis=1) # axis=1 沿列方向
# X
# 成交额 特征
y = df_ads.成交额
# 如果两个head 只显示最后一个 所以用print
print(X.head())
y.head()
查看一下,我们已经成功把成交额与其他影响因子分离开了。
选择数学模型
scikit-learn库为分类、回归、聚类等任务提供了简单且高效的工具。我们要使用LinearRegression()函数建立线性回归模型(根据上面的数据分布状况,我们在这里简单的认为这份数据是线性分布的),并探讨如何选择合适的模型、准备必要的输入数据、训练模型以及评估其表现。特别地,train_test_split函数被用来将原始数据集分割成训练集和测试集,从而确保模型不会过拟合。
# 数据训练
# 模型选择
# 简单模型 线性回归(LinearRegression)
from sklearn.linear_model import LinearRegression
# 线性回归算法的模型实例
model = LinearRegression()
拆分训练数据和测试数据 并训练
同样是使用scikit-learn库,我们需要将数据拆分成训练数据和测试数据,利用训练数据取训练大模型,将测试数据交给训练过后的大模型并得到结果,与原结果进行比较,进而得出训练后大模型的可靠度。
# 拆分 使用 train_test_split 方法
from sklearn.model_selection import train_test_split
# train_test_split 将数据分成 训练数据 测试数据
# 参数:影响因子 结果 测试比例(这里我们测试使用20%,训练使用80%) 随机数生成器
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2, random_state=0)
# 训练部分(train)
X_train.size # 3504
# 测试部分(test)
X_test.size # 876
# 正确拆分 总数不变
# 训练 本例中线性回归 y = ax + b 拿到了趋势(a,b) x -> y
# 使用训练数据来训练
model.fit(X_train,y_train)
获得模型结果并与预期结果相比较
# 预期的结果数据 衡量模型的训练质量
y_pred = model.predict(X_test)
# 拷贝测试集数据
df_ads_pred = X_test.copy()
# df_ads_pred.head()
# 添加列
df_ads_pred['成交额真值'] = y_test
df_ads_pred['成交额预测值'] = y_pred
df_ads_pred
可以看到真值与预期值的差距
打分
scikit-learn库还提供打分功能,我们可以根据打分来选择是否再次对大模型进行训练。
# 打分
print("线性回归预测集评分",model.score(X_test,y_test))
print("线性回归训练集评分",model.score(X_train,y_train))
再次绘制图标
最后我们再次绘制图表,将大模型得到的预期值添加到之前的图表中做对比。
# 更新X,y
# 我们只研究成交额与转发量之间的关系
X = df_ads[['转发量']]
print(X.head())
y = df_ads.成交额
y.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*6 英寸
plt.figure(figsize=(10,6))
# 散点图(scatter)
# 真正值 与 预期值
plt.scatter(X_test,y_test,color='red',label="true value")
plt.plot(X_test,y_pred,color='red',linewidth=2,label="predict value")
# 横纵坐标标题
plt.xlabel("shares")
plt.ylabel("sells")
# 标题
plt.title('shares VS selles')
# 图例
plt.legend()
# 网格
plt.grid(True)
plt.show()
得到最终结果!
结论
我们使用数据训练了一个大模型,,这就是机器学习的简单过程。通过利用魔搭社区的高性能计算资源和 scikit-learn 等工具,我们提升了预测的准确性,机器学习在实际应用中具有强大潜力和广泛适用性。