一、设计要求
数据来源说明:数据集包含两个表格:
- mum_baby.csv(婴儿信息):
- user_id:用户ID(文本)
- birthday:出生日期(日期)
- gender:性别(文本,0: 男,1: 女)
- mum_baby_trade_history.csv(交易历史):
- user_id:用户ID(文本)
- auction_id:商品编码(文本)
- cat_id:商品二级分类(文本)
- cat1:商品一级分类(文本)
- property:商品属性(文本)
- buy_mount:购买数据(数值)
- day:购买日期(日期)
2.明确问题:提出了多个分析问题,包括:
- 年龄段的分布情况?
- 哪一类商品最受欢迎?
- 不同性别对商品的选择情况?
- 同一商品大类下不同分类的销售程度?
- 用户购商品的季节性偏好?
- 每个月母婴商品的销量变化如何?
- 各种母婴商品的销量如何?
- 婴儿年龄对母婴商品的销量有什么影响?
- 婴儿性别对母婴商品的销量有什么影响?
3.分析思路提示:从用户、用户两个维度展开分析,建立模型预测。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
二、设计思路
数据说明
1.婴儿信息表(mum_baby.csv)
该表格包含了用户的基本信息,包括用户ID、出生日期和性别。具体字段如下:
- user_id:用户ID(文本类型),唯一标识每个用户。
- birthday:出生日期(日期类型),表示用户的出生日期。
- gender:性别(文本类型),其中0表示男性,1表示女性。
2. 交易历史表(mum_baby_trade_history.csv)
该表格记录了用户的商品交易信息,包括商品编码、分类、属性、购买数量和购买日期。具体字段如下:
- user_id:用户ID(文本类型),唯一标识每个用户,与婴儿信息表中的user_id对应。
- auction_id:商品编码(文本类型),唯一标识每个商品。
- cat_id:商品二级分类(文本类型),表示商品的二级分类。
- cat1:商品一级分类(文本类型),表示商品的一级分类。
- property:商品属性(文本类型),包含多个属性的组合。
- buy_mount:购买数量(数值类型),表示用户购买该商品的数量。
- day:购买日期(日期类型),表示交易发生的日期。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
三、可视化分析
3.1. 年龄段的分布情况(箱线图)
plt.figure(figsize=(10, 6)) sns.boxplot(x=data['age']) plt.xlabel('年龄') plt.title('年龄段的分布情况(箱线图)') plt.show()
箱线图用于展示用户年龄段的分布情况。通过箱线图,可以看到年龄的中位数、四分位数、极值以及可能存在的异常值。这有助于理解不同年龄段的用户数量分布,从而为市场定位和营销策略提供依据。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
3.2. 最受欢迎的商品类别(环形图)
3.3. 性别对商品选择的影响(雷达图)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
3.4 同一商品大类下不同分类的销售程度(散点图)
plt.figure(figsize=(10, 6)) sns.scatterplot(data=data, x='cat1', y='buy_mount', hue='cat_id', style='cat_id') plt.xlabel('商品一级分类') plt.ylabel('购买数量') plt.title('商品大类下不同分类的销售程度(散点图)') plt.show()
3.5. 用户购商品的季节性偏好(条形图)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
3.6. 每个月母婴商品的销量变化(折线图)
3.7. 各种母婴商品的销量(饼状图)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
3.8. 婴儿年龄对母婴商品销量的影响(箱线图)
plt.figure(figsize=(10, 6)) sns.boxplot(x=data['age'], y=data['buy_mount']) plt.xlabel('年龄') plt.ylabel('购买数量') plt.title('婴儿年龄对母婴商品销量的影响(箱线图)') plt.show()
3.9. 婴儿性别对母婴商品销量的影响(条形图)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
四、数据分析模型
在数据预处理阶段,代码首先将birthday和day字段转换为日期时间格式,然后计算用户的年龄。年龄的计算是通过购买日期和出生日期之间的天数差除以365得到的。接着,将性别和商品一级分类编码为数值类型,便于后续的机器学习建模。性别被编码为0和1,分别表示男性和女性;商品一级分类也被编码为数值类型。
特征提取方面,选择了用户的年龄、性别和商品一级分类作为特征变量(即自变量),将购买数量作为目标变量(即因变量)。通过对特征和目标变量之间的相关性分析,代码使用seaborn库绘制了相关性热力图,展示各特征与目标变量之间的相关性。这一步有助于识别对购买数量影响较大的特征,为模型优化提供参考。
接下来,代码将数据集拆分为训练集和测试集,其中80%的数据用于训练模型,20%的数据用于测试模型。使用scikit-learn库中的train_test_split函数进行数据拆分,确保训练集和测试集的分布一致性。
模型评估方面,代码使用了均方误差(MSE)和R²值来评估模型的性能。均方误差用于衡量预测值与真实值之间的平均误差,误差越小,模型性能越好;R²值用于衡量模型的解释力,数值越接近1,表示模型越能解释数据的变异性。通过计算MSE和R²值,可以判断模型的预测精度和可靠性。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
4.1 模型建立及分析
本项目旨在通过数据分析和机器学习技术,对阿里天池平台提供的婴幼儿商品交易数据进行深入研究,以帮助商家了解市场动态并做出科学决策
1. 数据加载与初步探索
baby_info = pd.read_csv('mum_baby.csv') trade_history = pd.read_csv('mum_baby_trade_history.csv')
设计思路:首先,加载婴儿信息和交易历史数据。baby_info表包含用户的出生日期和性别信息,而trade_history表记录了商品的交易数据。通过加载这两个数据表,可以为后续的数据处理和分析提供基础。
2. 数据预处理
baby_info['birthday'] = pd.to_datetime(baby_info['birthday'], format='%Y%m%d') trade_history['day'] = pd.to_datetime(trade_history['day'], format='%Y%m%d')
设计思路:将日期字段转换为日期时间格式,确保数据的一致性和可操作性。随后,将两个表基于用户ID进行合并,生成包含所有相关信息的完整数据集。这一步骤旨在整合用户的基本信息与其购买行为,为后续分析奠定基础。
3. 特征工程
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
data['age'] = (data['day'] - data['birthday']).dt.days // 365 data['gender'] = data['gender'].astype('category').cat.codes
设计思路:计算用户年龄并将分类变量(性别和商品分类)编码为数值类型。这一步骤有助于将原始数据转换为适合模型训练的格式。特征工程是机器学习模型构建中的关键环节,通过提取有意义的特征,可以提升模型的预测能力。
5. 数据集划分
设计思路:将数据集划分为训练集和测试集,其中80%的数据用于训练模型,20%的数据用于评估模型。合理的数据集划分可以确保模型的泛化能力,并防止过拟合。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
6. 模型预测与评估
y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred)
使用测试集数据进行预测,并计算均方误差(MSE)和R²值来评估模型性能。MSE衡量预测值与真实值之间的平均误差,R²值表示模型解释数据变异性的能力。这些评估指标可以帮助判断模型的预测精度和可靠性。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈
本项目通过数据加载与预处理、特征工程、数据可视化、模型训练与评估、预测结果可视化等步骤,系统地展示了如何利用数据科学和机器学习技术对电子商务平台上的婴幼儿商品交易数据进行分析和预测。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 母婴数据预测 ” 获取。👈👈👈