当前位置: 首页 > news >正文

简单的网站设计多少钱wordpress定时器

简单的网站设计多少钱,wordpress定时器,网站备案营业执照,最好的免费logo设计网站承接上一篇案例电商直播间提取的特征#xff0c;进而做一篇机器学习的案例#xff0c;来预测直播间的成交金额。 Python数据分析案例39——电商直播间评论可视化分析#xff08;LDA#xff09; 1. 引言 1.1 直播电商与传统电商的比较 直播电商作为一种新兴的电子商务模式…承接上一篇案例电商直播间提取的特征进而做一篇机器学习的案例来预测直播间的成交金额。 Python数据分析案例39——电商直播间评论可视化分析LDA 1. 引言 1.1 直播电商与传统电商的比较 直播电商作为一种新兴的电子商务模式与传统电商在多个方面展现出显著的差异。传统电商通常依赖于图文描述和用户评论来展示产品而直播电商则利用实时视频直播的方式通过主播的演示和解说来展示产品。这种形式增强了产品的展示效果使消费者能更直观地了解产品。此外直播电商的一个显著特点是其社交互动性主播与观众之间的即时交流为消费者提供了实时咨询的机会增强了购物体验的互动性和社交性。 1.2 社交互动功能对消费者购物体验的影响 社交互动功能是直播电商成功的关键因素之一。在直播过程中消费者不仅可以观看产品展示还可以通过弹幕、评论、点赞等方式与主播或其他观众互动。这种互动提高了用户的参与度和购买意愿。消费者的互动行为如提问、评论和反馈可以即时获得回应这不仅增加了购物的乐趣还帮助消费者做出更加明智的购买决策。 1.3 研究背景与意义 随着直播电商的迅速发展对其销售模式的研究变得日益重要。先前的研究主要集中在销量预测和用户行为分析上但对于直播间内部的互动行为及其对销售影响的深入研究仍相对有限。理解消费者在直播间内的互动行为对预测销量和优化销售策略具有重要意义。本研究旨在通过分析直播间的互动数据探索消费者行为模式及其对销售的影响以提供更准确的销量预测和更有效的销售策略。 2. 数据集描述 本研究旨在通过分析直播间的实时评论数据深入探索消费者行为模式和兴趣偏好。研究主要关注于从评论数据中提取有效信息并将这些信息与成交数据相结合以揭示消费者行为与直播间销售效果之间的关系从而做到销售量的预测。 数据集包括2023年9月期间两个直播间RoomJ和RoomL的40场次直播的实时评论与成交数据。数据粒度为分钟级。收集的数据变量主要包括 live_room_id 直播间ID time 记录的时间点 live_comment 直播评论内容 ONLINE_USER_CNT 在线用户数量 follow_anchor_ucnt 关注主播的用户数量 fans_club_join_ucnt 加入粉丝团的用户数量 pay_combo_cnt 成交件数 pay_ucnt 成交人数 pay_amt 成交金额 其中live_comment是非标准的数据主要是评论用户的信息我们需要对评论内容进行解析和处理。为了准确预测销售量构建有效的特征变量从评论信息我们从中抽取了新的四个特征值分别是comment_count代表该时间点的评论数量该时间点的评论平均长度是avg_comment_length最后是该时间点的评论的情感系数值sentiment和主播账户是否发言open该四个变量能更好的帮助模型预测直播间的销售量。 需要这代码演示数据和全部代码文件的同学可以参考电商直播间预测数据 3. 数据探索 先导入包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import jieba plt.rcParams [font.sans-serif] SimHei #显示中文 plt.rcParams [axes.unicode_minus]False #显示负号 读取数据我们将直播间J和直播间L的数据进行合并删除不能算的文本和时间对象 data pd.read_csv(预测RoomJ.csv,parse_dates[time]).set_index(time) data data.loc[:, ~data.columns.str.contains(Unnamed)] data2 pd.read_csv(预测RoomL.csv,parse_dates[time]).set_index(time) data2 data2.loc[:, ~data2.columns.str.contains(Unnamed)] datapd.concat([data,data2],axis0) data.head(3) 3.1 数据描述性统计 先看数据基础信息 data.info() 都是数值型数据第一列有点缺失值。 #观察缺失值 import missingno as msno msno.matrix(data) 数据集大小和完整性数据集共有 10432 条记录每条记录包含 10 个特征。 特征 ONLINE_USER_CNT 拥有较少的非空值9917这可能意味着这个字段在某些记录中缺失。这需要在数据预处理阶段进行处理比如通过插值、删除缺失值所在的行或采用其他适合的方法。数据类型大部分特征follow_anchor_ucnt, fans_club_join_ucnt, pay_combo_cnt, pay_ucnt, pay_amt, comment_count, open是整数型int64这表明这些数据是计数或分类数据。ONLINE_USER_CNT, avg_comment_length, sentiment 是浮点数float64表示它们可能包含更精细的量化信息例如平均值或比率。 变量的描述性统计信息如下 np.round(data.describe(),2) ONLINE_USER_CNT在线用户数:平均值为 450.72但标准差为 504.66表明数据分布的波动性很大。最高在线用户数为 4783最低仅为 4这可能意味着某些直播非常受欢迎而其他则参与度较低。follow_anchor_ucnt关注主播用户数:平均关注用户数为 845.28但标准差高达 1364.46说明关注数量在不同主播间差异显著。最高关注用户数为 8181最低为 0。fans_club_join_ucnt粉丝俱乐部加入用户数:平均加入用户数为 51.3标准差为 94.76。这表明虽然某些主播的粉丝俱乐部有较高的加入率但总体上加入粉丝俱乐部的用户数量较少。pay_combo_cnt支付组合数量:平均支付组合数量为 1170.96但其标准差为 1527.22反映了在不同直播间支付组合数量的巨大差异。pay_ucnt支付用户数:平均支付用户数为 1061.51标准差为 1450.90说明在不同的直播中参与支付的用户数量差异很大。pay_amt支付金额:平均支付金额为 11377464.57标准差为 15014470.57表示某些直播的销售额非常高而其他的则相对较低。comment_count评论数量:平均评论数量为 10.96但标准差为 14.86表明用户参与度在不同的直播间有显著差异。avg_comment_length平均评论长度:平均评论长度为 10.00标准差为 6.36。这个数据显示了评论的普遍简洁性。sentiment情感:平均情感分数为 0.45标准差为 0.40范围从 0最负面到 1最正面这可能反映了用户评论的整体情感倾向。 数据显示在在线用户数、关注用户数、支付用户数等方面存在显著的波动这可能与直播内容的吸引力、主播的人气或其他市场因素有关。高支付金额的直播往往与较高的用户参与度如评论数量和支付用户数相关联但也存在一些例外。用户情感倾向与销售成绩之间的关系不明确需要更深入的分析来探索这一关联。 3.2 初步的数据可视化 然后对整体的数据框进行初步的信息探索画箱线图。 #查看特征变量的箱线图分布 columns data.columns.tolist() # 列表头 dis_cols 4 #一行几个 dis_rows len(columns) plt.figure(figsize(4 * dis_cols, 4 * dis_rows))for i in range(len(columns)):plt.subplot(dis_rows,dis_cols,i1)sns.boxplot(datadata[columns[i]], orientv,width0.5)plt.xlabel(columns[i],fontsize 20) plt.tight_layout() #plt.savefig(特征变量箱线图,formatepng,dpi500) plt.show() ONLINE_USER_CNT在线用户数量的中位数相对较低但是有很多异常值显示出某些时间点在线用户数量远高于其他时间。 follow_anchor_ucnt关注主播的用户数量也呈现出相似的分布中位数较低异常值较多。 fans_club_join_ucnt粉丝俱乐部加入的用户数量的分布与上述两个变量相似但异常值相对较少。 pay_ucnt付费用户数量的分布显示大部分的时间点付费用户数量较少但也存在一些高峰值。 pay_amt付费金额的分布情况表明尽管大多数时间点的付费金额不高但有一些非常高的异常值。 pay_combo_cnt组合支付次数的分布表明大多数时间点的组合支付次数都较低但仍然有一些异常高的支付次数。 comment_count评论数量的中位数很低但有大量的异常值表明某些情况下评论活动非常活跃。 avg_comment_length平均评论长度的分布较为集中但也有一些较长评论的异常值。 sentiment情感倾向分布较为集中且无异常值这可能表明大部分时间用户的情感倾向是相对稳定的。 open此变量的箱线图看起来像一个正方形可能表明数据非常集中没有变化或者每个点的值都相同 对应的核密度图   #画密度图训练集和测试集对比 dis_cols 4 #一行几个 dis_rows len(columns) plt.figure(figsize(4 * dis_cols, 4 * dis_rows))for i in range(len(columns)):ax plt.subplot(dis_rows, dis_cols, i1)ax sns.kdeplot(data[columns[i]], colorRed ,fillTrue)#ax sns.kdeplot(data2[columns[i]], colorBlue,warn_singularFalse,fillTrue)ax.set_xlabel(columns[i],fontsize 20)ax.set_ylabel(Frequency,fontsize 18)ax ax.legend([train, test]) plt.tight_layout() #plt.savefig(训练测试特征变量核密度图,formatepng,dpi500) plt.show() 和前面的结论差不多。 我们选择有代表性的[ONLINE_USER_CNT, pay_combo_cnt, pay_ucnt, pay_amt]这四个变量画出其核密度图观察其分布特点 #sns.set(stylewhitegrid)# 关键字段列表 key_columns [ONLINE_USER_CNT, pay_combo_cnt, pay_ucnt, pay_amt]# 绘制关键字段的分布图 plt.figure(figsize(10, 6),dpi256) for i, column in enumerate(key_columns):plt.subplot(2, 2, i1)sns.histplot(data[column], kdeTrue)plt.title(f{column})plt.xlabel(column)plt.ylabel(Frequency)plt.tight_layout() plt.show() ONLINE_USER_CNT在线用户数:分布呈现出右偏正偏态绝大部分的直播观看人数集中在较低的区间但也有少数直播时间的在线用户数非常高。这表明大部分直播时间的吸引力有限而只有少数直播的时候可能是活动期间能够吸引大量观众。 pay_combo_cnt支付组合数量:同样呈现出右偏分布。大多数直播的支付组合数量较低但有少数直播的支付组合数量远高于平均水平。这可能表明对于大部分直播来说用户倾向于购买较少的商品组合但也存在着一些高销量的异常值。 pay_ucnt支付用户数:支付用户数的分布与上述两个变量相似也是右偏的。大部分直播的购买用户数量不多但有少数直播能吸引大量购买用户。这种分布可能暗示了用户购买意愿与直播内容或推广活动的相关性。 pay_amt支付金额:支付金额的分布极为右偏这是上述所有图中最明显的。大多数直播时间的总销售额较低但有极少数直播时间实现了非常高的销售额。这种极端的不平衡分布可能指出虽然大部分直播的经济效益有限但一小部分直播时间能够产生巨大的销售和利润。 整体分析与建议这四个变量的分布都显示了市场上存在极大的不平衡即“长尾效应”其中少数直播时间能够吸引大量用户并实现高销售额而大多数直播时间则表现平平。 在预测电商直播的销售量时应特别关注那些能夜吸引大量在线用户和支付用户的直播时间和活动。这可能需要分析直播内容的特点、主播的影响力、以及用户的购买行为模式。 考虑到右偏的分布特点可能需要利用非线性模型来更好地预测销售量例如使用决策树或随机森林来处理这种非对称性。此外考虑到少数直播的销售额远高于其他异常值处理也将是预测准确性的关键。 我们将在线人数和成交金融画出散点图观察其相关性 # 绘制ONLINE_USER_CNT与pay_amt之间的关系 plt.figure(figsize(8, 6)) sns.scatterplot(xONLINE_USER_CNT, ypay_amt, datadata) plt.title(Relationship between ONLINE_USER_CNT and pay_amt) plt.xlabel(ONLINE_USER_CNT) plt.ylabel(pay_amt) plt.show() 绘制重要的变量与pay_amt的散点图 fig, axes plt.subplots(2, 2, figsize(7,7),dpi128)# 绘制每个变量与pay_amt的散点图 sns.scatterplot(xdata.columns[0], ypay_amt, datadata, axaxes[0, 0]) sns.scatterplot(xdata.columns[1], ypay_amt, datadata, axaxes[0, 1]) sns.scatterplot(xdata.columns[2], ypay_amt, datadata, axaxes[1, 0]) sns.scatterplot(xdata.columns[3], ypay_amt, datadata, axaxes[1, 1])# 调整子图间距 plt.tight_layout()# 显示图表 plt.show() 相关性散点图显示了在线用户数和成交金额之间的正向关联。可以观察到随着在线用户数的增加成交金额也有增加的趋势尽管这种关系不是严格的线性关系。 数据分布大部分数据点集中在图的左下角即在线用户数和成交金额都较低的区域。这与之前核密度图的分析相符大多数直播的观众数量和销售额较低。 异常值有些数据点显示了非常高的成交金额即使在线用户数并不是最高的。这可能表明有些直播的转化率即用户购买的可能性非常高或者有较高单价的商品被销售。 集群现象数据中似乎存在几个不同的“集群”特别是在成交金额较高的区域。这可能表明某些直播活动具有特殊的吸引力或销售策略从而实现了较高的成交金额。 变化趋势尽管在线用户数与成交金额之间存在正相关性但该关系的变化趋势并非均匀。例如在较低的在线用户数区间成交金额的增长较为缓慢而在用户数较高的区间成交金额的增长则更为显著。 数据表明增加在线用户数可能是提高成交金额的一个途径但也暗示了单纯的用户数量增长并不一定直接转化为销售额的增加。可能存在很多高净值客户他们人数少却能创造很大的成交金额。 3.3 相关性分析 所有变量的相关性热力图如下 corr plt.subplots(figsize (12,10),dpi128) corr sns.heatmap(data.corr(),annotTrue,squareTrue) #plt.savefig(训练集特征热力图.png,dpi512) 从图中我们可以得知高度相关的变量pay_combo_cnt支付组合数量与 follow_anchor_ucnt关注主播用户数和 pay_ucnt支付用户数显示出非常高的相关性接近 1这表明关注主播的用户更倾向于进行购买。pay_amt支付金额与 follow_anchor_ucnt、pay_combo_cnt 和 pay_ucnt 也呈现出非常高的相关性这说明成交金额与支付用户数、关注主播用户数和支付组合数量强相关。 中度相关的变量ONLINE_USER_CNT在线用户数与 comment_count评论数量有中度正相关0.68指出在线用户越多评论活动也越频繁。sentiment情感与大多数变量呈负相关尤其是与 pay_amt-0.093这可能表明情感评分较低的评论并不一定与低销售额直接相关联。 低度或无显著相关的变量avg_comment_length平均评论长度与其他变量大多没有显著相关性最高的相关性是与 sentiment0.47这可能意味着评论的长度与其情感倾向有一定的联系。 鉴于相关性热力图显示的信息我们发现销售金额和成交件数和成交人数都是线性相关的这说明他们本质上可以看为一个变量。在后续进行成交量预测的时候需要处理。 4. 数据预处理 填充一下缺失值 data.fillna(methodffill,inplaceTrue) 4.1 特征构造和特征选择 分开x和y对x进行异常值的观察。 本文从评论中构建了四个新特征然后发现直播的时间也和成交量有一定的影响所以我们提出每个直播的时间小时h作为一个新特征。然后pay_combo_cntpay_ucntpay_amt三个变量本质来说是一个变量我们选择使用pay_amt作为响应变量其他两个变量删除。 4.2 异常值处理 在本项目中我们采用了标准化Standardization方法来对数据进行转化。标准化处理后每个特征的数据将会具有0的均值mean和1的标准差standard deviation 实施数据标准化之后我们将能够更准确地评估不同特征对电商直播销售量预测的贡献从而构建一个效果更好、更稳健的预测模型。此外这还有助于识别出哪些特征对于预测任务来说是冗余的从而可能在模型简化和特征选择过程中被去除。 data[hour]pd.Series(data.index).dt.hour.to_numpy() ydata[pay_amt].reset_index(dropTrue) Xdata[[ONLINE_USER_CNT, follow_anchor_ucnt, fans_club_join_ucnt,comment_count,avg_comment_length, sentiment, open,hour]].reset_index(dropTrue) #X异常值处理先标准化 from sklearn.preprocessing import StandardScaler scaler StandardScaler() X_s scaler.fit_transform(X) plt.figure(figsize(20,8)) plt.boxplot(xX_s,labelsX.columns) #plt.hlines([-10,10],0,len(columns)) plt.show() 可以看到有点变量存在一些异常值需要处理。 #异常值多的列进行处理 def deal_outline(data,col,n): #数据要处理的列名几倍的方差for c in col:meandata[c].mean()stddata[c].std()datadata[(data[c]mean-n*std)(data[c]meann*std)]#print(data.shape)return data Xdeal_outline(X,[ONLINE_USER_CNT, follow_anchor_ucnt, fans_club_join_ucnt,comment_count, avg_comment_length],6) yy[X.index] X.shape,y.shape # 查看y的分布 # 查看y的分布 #回归问题 plt.figure(figsize(8,3),dpi128) plt.subplot(1,3,1) y.plot.box(titlebox) plt.subplot(1,3,2) y.plot.hist(titlehist) plt.subplot(1,3,3) y.plot.kde(titlekde) #sns.kdeplot(y, colorRed, shadeTrue) #plt.savefig(响应变量.png) plt.tight_layout() plt.show() 偏态 #处理y的异常值之后 yy[y 80000000] plt.figure(figsize(8,3),dpi128) plt.subplot(1,3,1) y.plot.box(titlebox) plt.subplot(1,3,2) y.plot.hist(titlehist) plt.subplot(1,3,3) y.plot.kde(titlekde) #sns.kdeplot(y, colorRed, shadeTrue) #plt.savefig(响应变量.png) plt.tight_layout() plt.show() 对y进行异常值处理筛选给x #筛选给x XX.loc[y.index,:] X.shape,y.shape 最终我们还剩下10209个样本X有8个特征开始进行机器学习建模预测。  4.3 划分训练集与验证集 #划分训练集和验证集 from sklearn.model_selection import train_test_split X_train,X_val,y_train,y_valtrain_test_split(X,y,test_size0.2,random_state0) 我们采用28分发 测试集20%的数据训练集80%侧数据。 #数据标准化  from sklearn.preprocessing import StandardScaler scaler StandardScaler() scaler.fit(X_train) X_train_s scaler.transform(X_train) X_val_s scaler.transform(X_val) print(训练数据形状) print(X_train_s.shape,y_train.shape) print(验证数据形状) (X_val_s.shape,y_val.shape) 我们采用十种常用的机器学习模型[线性回归,惩罚回归,K近邻,决策树,随机森林,梯度提升] 进行训练然后查看他们在测试集上的表现。 使用sklearn库直接进行训练呢拟合然后再测试集上进行评分计算。 #模型训练 #采用十种模型对比验证集精度 from sklearn.linear_model import LinearRegression from sklearn.linear_model import ElasticNet from sklearn.neighbors import KNeighborsRegressor from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import RandomForestRegressor from sklearn.ensemble import GradientBoostingRegressor from xgboost.sklearn import XGBRegressor from lightgbm import LGBMRegressor from sklearn.svm import SVR from sklearn.neural_network import MLPRegressor 定义评价指标 from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squared_error,r2_scorefrom sklearn.model_selection import KFolddef evaluation(y_test, y_predict):mae mean_absolute_error(y_test, y_predict)mse mean_squared_error(y_test, y_predict)rmse np.sqrt(mean_squared_error(y_test, y_predict))#mape(abs(y_predict -y_test)/ y_test).mean()r_2r2_score(y_test, y_predict)return mae, mse ,rmse, r_2 #mse 模型都装入列表然后准备拟合 #线性回归 model1 LinearRegression()#弹性网回归 model2 ElasticNet(alpha0.05, l1_ratio0.5)#K近邻 model3 KNeighborsRegressor(n_neighbors10)#决策树 model4 DecisionTreeRegressor(random_state77,max_depth5)#随机森林 model5 RandomForestRegressor(n_estimators500, max_featuresint(X_train.shape[1]/3) , random_state0)#梯度提升 model6 GradientBoostingRegressor(n_estimators500,random_state123)#极端梯度提升 model7 XGBRegressor(objectivereg:squarederror, n_estimators1000, random_state0)#轻量梯度提升 model8 LGBMRegressor(n_estimators1000,objectiveregression, # 默认是二分类random_state0)#支持向量机 #model9 SVR(kernelrbf)#神经网络 model9 MLPRegressor(hidden_layer_sizes(64,16), random_state77, max_iter15000)model_list[model1,model2,model3,model4,model5,model6,model7,model8,model9] model_name[线性回归,惩罚回归,K近邻,决策树,随机森林,梯度提升,极端梯度提升,轻量梯度提升,神经网络] 计算模型拟合预测。计算评价指标转入表 df_evalpd.DataFrame(columns[MAE,RMSE,MSE,R2]) for i in range(len(model_list)):model_Cmodel_list[i]namemodel_name[i]model_C.fit(X_train_s, y_train)y_predmodel_C.predict(X_val_s)df_eval.loc[f{name},:]list(evaluation(y_val, y_pred))#print(name方法在验证集的准确率为str(s)) 查看结果  df_eval 进行可视化 bar_width 0.4 colors[c, b, g, tomato, m, y, lime, k,orange,pink,grey,tan] fig, ax plt.subplots(2,2,figsize(10,8),dpi128) for i,col in enumerate(df_eval.columns):nint(str(22)str(i1))plt.subplot(n)df_coldf_eval[col]m np.arange(len(df_col))plt.bar(xm,heightdf_col.to_numpy(),widthbar_width,colorcolors)#plt.xlabel(Methods,fontsize12)namesdf_col.indexplt.xticks(range(len(df_col)),names,fontsize10)plt.xticks(rotation40)plt.ylabel(col,fontsize14)plt.tight_layout() #plt.savefig(柱状图.jpg,dpi512) plt.show() 可以看到随机森林xgboostLGBM这三个模型最好。 一般来说对于这种表格数据集成模型方法都是最好的也就是XGB,LGBM,RF等。前人的经验也都是这样说的。使用后面交叉验证我们只选三个模型随机森林极端梯度提升轻量梯度提升。 4.4交叉验证选出最好的模型 def evaluation2(lis):arraynp.array(lis)return array.mean() , array.std() def cross_val(modelNone,XNone,YNone,K5,repeated1):df_meanpd.DataFrame(columns[R2,MAE,RMSE,MSE]) df_stdpd.DataFrame(columns[R2,MAE,RMSE,MSE])for n in range(repeated):print(f正在进行第{n1}次重复K折.....随机数种子为{n}\n)kf KFold(n_splitsK, shuffleTrue, random_staten)R2[]MAE[]RMSE[]MSE[]print(f 开始本次在{K}折数据上的交叉验证.......\n)i1for train_index, test_index in kf.split(X):print(f 正在进行第{i}折的计算)X_trainX.values[train_index]y_trainy.values[train_index]X_testX.values[test_index]y_testy.values[test_index]model.fit(X_train,y_train)scoremodel.score(X_test,y_test)R2.append(score)predmodel.predict(X_test)mae, rmse, mse,_evaluation(y_test, pred)MAE.append(mae)RMSE.append(rmse)MSE.append(mse)print(f 第{i}折的拟合优度为{round(score,4)}MAE为{round(mae,4)}RMSE为{round(rmse,4)}MSE为{round(mse,4)})i1print(f ———————————————完成本次的{K}折交叉验证———————————————————\n)R2_mean,R2_stdevaluation2(R2)MAE_mean,MAE_stdevaluation2(MAE)RMSE_mean,RMSE_stdevaluation2(RMSE)MSE_mean,MSE_stdevaluation2(MSE)print(f第{n1}次重复K折本次{K}折交叉验证的总体拟合优度均值为{R2_mean}方差为{R2_std})print(f 总体MAE均值为{MAE_mean}方差为{MAE_std})print(f 总体RMSE均值为{RMSE_mean}方差为{RMSE_std})print(f 总体MSE均值为{MSE_mean}方差为{MSE_std})print(\n\n)df1pd.DataFrame(dict(zip([R2,MAE,RMSE,MSE],[R2_mean,MAE_mean,RMSE_mean,MSE_mean])),index[n])df_meanpd.concat([df_mean,df1])df2pd.DataFrame(dict(zip([R2,MAE,RMSE,MSE],[R2_std,MAE_std,RMSE_std,MSE_std])),index[n])df_stdpd.concat([df_std,df2])return df_mean,df_std 首选计算轻量梯度提升lgbm模型 model LGBMRegressor(n_estimators500,objectiveregression,random_state0) lgb_crosseval,lgb_crosseval2cross_val(modelmodel,XX,Yy,K3,repeated5) 然后计算xgboost model XGBRegressor(n_estimators500,objectivereg:squarederror,random_state0) xgb_crosseval,xgb_crosseval2cross_val(modelmodel,XX,Yy,K3,repeated5) 随机森林 model RandomForestRegressor(n_estimators500, max_featuresint(X_train.shape[1]/3) , random_state0) rf_crosseval,rf_crosseval2cross_val(modelmodel,XX,Yy,K3,repeated5) 不同模型的效果均值对比 plt.subplots(1,4,figsize(16,3)) for i,col in enumerate(lgb_crosseval.columns):nint(str(14)str(i1))plt.subplot(n)plt.plot(lgb_crosseval[col], k, labelLGB)plt.plot(xgb_crosseval[col], b-., labelXGB)plt.plot(rf_crosseval[col], r-^, labelRF)plt.title(f不同模型的{col}对比)plt.xlabel(重复交叉验证次数)plt.ylabel(col,fontsize16)plt.legend() plt.tight_layout() plt.show() 黑色是LGB很明显我们可以看到在拟合优度上LGB明显好于其他两个模型其他三个误差指标上看lgb都是最小的。四个指标都说明LGB最好。 不同模型的方差对比 plt.subplots(1,4,figsize(16,3)) for i,col in enumerate(lgb_crosseval2.columns):nint(str(14)str(i1))plt.subplot(n)plt.plot(lgb_crosseval2[col], k, labelLGB)plt.plot(xgb_crosseval2[col], b-., labelXGB)plt.plot(rf_crosseval2[col], r-^, labelRF)plt.title(f不同模型的{col}方差对比)plt.xlabel(重复交叉验证次数)plt.ylabel(col,fontsize16)plt.legend() plt.tight_layout() plt.show() 方差代表稳定性可以看到三个模型的方差都差不多稳定性都差不多。 并且在运行的时候LGBM的时间是小于XGB小于随机森林的。 所以综合他们的表现效果、稳定性、运行时间来看——LGBM优于XGB优于RF。 最好的模型是LGBM!!下面对它进行超参数搜索。 4.5 超参数搜索 #利用K折交叉验证搜索最优超参数 from sklearn.model_selection import KFold, StratifiedKFold from sklearn.model_selection import GridSearchCV,RandomizedSearchCV # Choose best hyperparameters by RandomizedSearchCV #随机搜索决策树的参数 param_distributions {max_depth: range(4, 10), subsample:np.linspace(0.5,1,5 ),num_leaves: [15, 31, 63, 127],colsample_bytree: [0.6, 0.7, 0.8, 1.0]}# min_child_weight:np.linspace(0,0.1,2 ), kfold KFold(n_splits3, shuffleTrue, random_state1) model RandomizedSearchCV(estimator LGBMRegressor(objectiveregression,random_state0,learning_rate 0.05,n_estimators 500),param_distributionsparam_distributions, n_iter200) model.fit(X_train_s, y_train) 最优参数 model.best_params_ 最优参数模型预测 model model.best_estimator_ model.score(X_val_s, y_val) 效果很好99.5%准确率。 ## 利用最好的参数模型在所有的数据上进行训练 modelLGBMRegressor(objectiveregression,subsample0.75,learning_rate 0.05,n_estimators 500,num_leaves 63,max_depth 9,colsample_bytree1,random_state0)model.fit(X.to_numpy(),y.to_numpy()) model.score(X.to_numpy(), y.to_numpy()) 变量重要性 reversed_sorted_index model.feature_importances_.argsort()[::-1] plt.figure(figsize(6, 4),dpi256) sns.barplot(ynp.arange(X.shape[1]), xmodel.feature_importances_[reversed_sorted_index], orienth) plt.yticks(np.arange(X.shape[1]), X.columns[reversed_sorted_index]) plt.xlabel(Feature Importance) plt.ylabel() #plt.title(变量重要性) plt.show() 可以看到对于成交量预测贡献最大的变量是关注数和加入粉丝团人数还有在线数量。我们自己构建的时间小时的指标表现也还不错。 5. 结论 通过对电商直播销售数据的综合分析我们进行了数据描述图统计分析变量的的可视化相关性分析异常值处理特征工程的构建再构建了机器学习模型训练拟合测试评价对比我们可以得出以下结论 关注主播用户数这是对成交销售量最重要的特征其特征重要性远超其他变量。这表明主播的受欢迎程度对销售额有很大影响关注数越多可能意味着更高的用户参与度和购买意愿。加入粉丝团人数和在线人数都是一样的逻辑它表明粉丝对主播的忠诚度也是销售量的一个重要预测因素。 用户参与度的重要性。数据显示主播的受欢迎程度如关注主播的用户数和用户的参与度如粉丝俱乐部加入的用户数是影响销售量的关键因素。这强调了提高用户对直播内容的兴趣和参与度在电商直播中的重要性。 虽然评论数量在特征重要性中排名较低但仍显示出与销售量的正相关性。这指出互动性是重要的但可能不是唯一决定因素。 时间因素的次要作用直播的具体时间小时特征的重要性也较高这可能意味着用户参与和购买更多地受到内容质量和主播互动的影响这和直播的具体时间也是对应的一遍大家都是晚上看直播然后会购物从而促进消费。 情感和评论质量的较低影响论的平均长度和情感得分在特征重要性中排名较低这表明这些因素可能不直接影响用户的购买决策。 非线性模式的识别在构建的多个机器学习模型中随机森林rf极端梯度提升xgboost轻量梯度提升lgbm等表现最佳这表明销售数据中存在复杂的非线性关系这些关系可以通过集成学习方法更有效地捕捉。 需要这代码演示数据和全部代码文件的同学可以参考电商直播间预测数据 创作不易看官觉得写得还不错的话点个关注和赞吧本人会持续更新python数据分析领域的代码文章~
http://www.zqtcl.cn/news/376762/

相关文章:

  • 触屏网站开发四川住房建设厅网站
  • 百度商桥怎么接网站wordpress电影自动采集主题
  • 丽水做网站公司用vps建网站备案
  • 西安网站制作机构视频网站 备案
  • 北京城乡建设学校网站国内外贸网站建设公司
  • 万峰科技著.asp.net网站开发四酷全书电子工业出版社专业网站制作定制
  • 如何做好一个网站运营建公司网站的详细步骤
  • python开发做网站代理注册公司怎么样
  • 网站开发技术简介深圳市市场监督管理局官网
  • 有那种网站的浏览器wordpress调用当前分类文章
  • 电子商务网站推广论文网站规划思想方法有哪些内容
  • adsl做网站无锡免费网站制作
  • 怎么利用网站开发app免费软件库合集软件资料网站
  • 做变形字的网站工程公司简介模板
  • 网站建设网页怎么排列顺序网站制作 用户登录系统
  • 音乐网站用什么语言做深圳网站排名优化公司
  • h5响应式网站建设方案南京做微网站
  • 建设班级网站首页查注册公司什么网站
  • 中小企业网站建设平台网站开发技术大学教材
  • 有四川建设人才网这个网站吗青岛外贸网站运营哪家好
  • 网站建设j介绍ppt模板注册企业公司流程及费用
  • 建网站多少费用设计公司推荐
  • 东莞市营销网站建设哪个推广网站好
  • 上海青浦房地产网站建设广西建设人才网
  • 做网站的网络公司税收优惠推广优化关键词
  • 找能做网站的怎么查看网站备案号
  • 石嘴山北京网站建设h5网站建设
  • 滨州区建设局网站中国建行官网首页
  • 网站建设服务网站网站建设销售实习
  • 网站注册都需要什么给装修公司做推广的网站