电子商务初创公司的全栈数据科学项目(从数据收集到预测建模)

电子商务初创公司的全栈数据科学项目(从数据收集到预测建模)

读者们好,今天是星期六,我又带着另一个中等故事回来了。这个有点不同,这是一个 POC(概念证明),在我开始担任全职数据科学家之前,我被一家电子商务初创公司的老板要求执行 Cloudcraftz 解决方案列兵。有限公司

我的一个朋友几个月前开始做电子商务业务,所以有一天他早上打电话给我问我——“有没有可能知道我们地区或附近地区的人可能有兴趣在网上购物?什么样的人喜欢买什么样的东西?” .那时我得到了我的第一个委托数据科学项目。

由于是新公司,数据不多,收集数据也是我工作的一部分印度(主要是西孟加拉邦,因为这是一家非常新的初创公司,他们的主要重点是本国。)

注意:由于隐私问题,本文中的初创公司及其产品名称已更改。

所以,从这里开始。

笔记本导入

 %matplotlib 内联  
 将熊猫导入为 pd  
 将 matplotlib.pyplot 导入为 plt  
 将 seaborn 导入为 sns  
 从 sklearn.model_selection 导入 train_test_split  
 从 sklearn.ensemble 导入 RandomForestClassifier  
 从 sklearn.metrics 导入 accuracy_score

下面是回复我们调查表的 200 人的数据集(对于任何数据相关或 ML 项目来说,数据太少了,但我仍然不想放弃)。

加载数据集

 数据 = pd.read_csv('Survey.csv')

探索性数据分析 (EDA)

 数据头()

 数据尾()

 数据信息()<class 'pandas.core.frame.DataFrame'>  
 RangeIndex:200 个条目,0 到 199  
 数据列(共9列):  
 # 列非空计数 Dtype  
 --- ------ -------------- -----  
 0 年龄 200 非空 int64  
 1 Gender 200 非空对象  
 2 State/Union Territory 200 非空对象  
 3 City 200 非空对象  
 4 每月家庭收入 200 非空对象  
 5 产品有兴趣在线购买 200 个非空对象  
 6 就业状况 200 非空对象  
 7 你最好用于网上购物 200 个非空对象  
 8 你听说过 XPay 吗? 200 个非空对象  
 数据类型:int64(1),对象(8)  
 内存使用量:14.2+ KB# 检查空值(如果有)  
 pd.isnull(data).sum()年龄 0  
 性别 0  
 州/联邦领土 0  
 城市 0  
 家庭月收入 0  
 有兴趣在线购买的产品 0  
 就业状况 0  
 您最好用于在线购物 0  
 你听说过 XPay 吗? 0  
 数据类型:int64

家庭月收入与首选在线商品

在这里,我们根据家庭的月收入对数据集进行分组,以了解财务状况如何影响在线购物环境中的个人选择。

 group_data = data.groupby(['家庭月收入', '网购感兴趣的产品'])group_data.count()

从以上分组数据分析可以看出,收入范围内的人 10K及以下70K 通常更喜欢在网上买书,而收入在 50–70K 及以上 更喜欢从网上商店购买电子产品,例如笔记本电脑、手机、手表等。

在线商品首选v / s年龄

在这里,我们根据年龄对数据集进行分组,以了解年龄在决定人们在线购买的产品类型方面的作用。

 group_data_age = data.groupby(['有兴趣在线购买的产品'])  
 mean_age = group_data_age['Age'].mean()colors = {'Male':'tab:blue', 'Female':'tab:orange'} plt.figure(figsize=(8, 5))  
 plt.plot(mean_age, 'gv--')  
 plt.xticks(旋转=90,字体大小=14)  
 plt.title('平均年龄与网上经常购买的产品', fontsize=15)  
 plt.xlabel('产品', fontsize=14)  
 plt.ylabel('平均年龄', fontsize=14)  
 plt.show()

现在让我们看看性别如何与年龄一起影响市场

性别是否也在起作用?让我们也探讨一下,年龄和性别是如何在这里发挥作用的。

 new_data = pd.concat([data['Gender'], data['Age'], data['有兴趣在线购买的产品']],axis=1)  
 new_group_male = new_data[new_data.Gender=='男性'].groupby('有兴趣在线购买的产品')  
 new_group_female = new_data[new_data.Gender=='Female'].groupby('有兴趣在线购买的产品')age_male = new_group_male['Age'].mean()  
 age_female = new_group_female['Age'].mean()plt.figure(figsize=(8, 6))  
 plt.plot(age_male, 'bo--')  
 plt.plot(age_female, 'rv--')  
 plt.xticks(旋转=90)  
 plt.ylabel('平均年龄', fontsize=14)  
 plt.legend(labels=('男', '女'))  
 plt.show()

从上述数据分析中得出的几个值得注意的结论:

  1. 时尚商品大多由平均年龄大于男性的女性在网上购买,网上账单支付也有类似趋势。
  2. 移动配件、书籍和鞋子由平均年龄几乎相同的男性和女性在线购买。
  3. 除了这两个之外,在所有其他类别中,男性的平均或平均年龄都大于女性。

城市层与在线产品

我们都知道,人的生活方式因地而异,住在乡村的人与住在城镇或城市的人的生活方式会完全不同,这也可能在决定人们的生活方式方面发挥重要作用。更喜欢在线购买。

 饼图 = [] num = data[data.City=='Tier 1'].count()  
 pie_chart.append(num.Age) num = data[data.City=='Tier 2'].count()  
 pie_chart.append(num.Age) num = data[data.City=='Tier 3'].count()  
 pie_chart.append(num.Age)

这是数据中第 1 层、第 2 层和第 3 层读数的百分比

我们数据集中的很多条目来自一线城市,虽然我们尽力从各种城市、乡镇和村庄获取数据,但时间和资源有限,确实很难。

 标签 = 'Tier 1'、'Tier 2'、'Tier 3' plt.figure(figsize=(5, 5))  
 plt.pie(pie_chart, labels=labels, autopct='%1.1f%%', shadow=True, startangle=140)  
 plt.show()

 group_tier1 = data[data.City=='Tier 1'].groupby('有兴趣在线购买的产品')  
 group_tier2 = data[data.City=='Tier 2'].groupby('有兴趣在线购买的产品')  
 group_tier3 = data[data.City=='Tier 3'].groupby('有兴趣在线购买的产品')new_list = data['有兴趣在线购买的产品'].unique() 第 1 层、第 2 层、第 3 层 = []、[]、[]  
 标签2,标签3 = [],[] 对于我在 new_list 中:  
 Tier_1.append(group_tier1.get_group(i).Age.count())  
      
 对于我在 new_list 中:  
 如果我=='鞋子':  
 经过  
 别的:  
 标签2.append(i)  
 Tier_2.append(group_tier2.get_group(i).Age.count())  
          
 对于我在 new_list 中:  
 如果 i=='鞋子'或 i=='电器(例如:AC、电视、搅拌机等)'或 i=='手表'或 i=='家居饰品(例如:椅子、桌子)':  
 经过  
 别的:  
 标签3.append(i)  
 Tier_3.append(group_tier3.get_group(i).Age.count())

现在我们将看到这些物品是如何在这 3 层城市(分别)中分布的。

 # 第 1 层的饼图 标签 = new_list plt.figure(figsize=(10, 8))  
 plt.pie(Tier_1, 标签=标签, autopct='%1.1f%%', shadow=True, startangle=140)  
 plt.show()

 # 第 2 层的饼图 标签 = 标签2 plt.figure(figsize=(10, 8))  
 plt.pie(Tier_2, 标签=标签, autopct='%1.1f%%', shadow=True, startangle=140)  
 plt.show()

 # 第 3 层的饼图 标签 = 标签3 plt.figure(figsize=(10, 8))  
 plt.pie(Tier_3, 标签=标签, autopct='%1.1f%%', shadow=True, startangle=140)  
 plt.show()

一个值得注意的事实是,无论住在哪里,人们都更喜欢在网上购买书籍。

最后,我们希望看到就业状况方面的分布情况

 group_emp = data.groupby(['有兴趣在线购买的产品', '就业状况'])group_emp.count()

学生对书籍、手机配件和小工具的需求量很大。我们不会探索“您最喜欢用于在线购物”和“您听说过 XPay 吗?”的功能。因为这两列几乎没有任何差异,因此似乎对决策影响不大。

但是,我们不要对上面提到的这两个功能进行探索。

 # 首选使用的网上购物平台  
 data.iloc[:, 7].value_counts()Amazon 116  
 Flipkart 73  
 敏特拉 3  
 自己。有 2  
 摇一摇  
 Jio Mart 1  
 杂货店 1  
 不要网购1  
 塔塔克利克 1  
 阿霍 1  
 名称:您最好用于在线购物,dtype:int64

我们可以得出结论,大多数人使用 亚马逊 或者 Flipkart 用于网上购物。

为预测未来结果的数据建模

 # 这里我们只取分类变量来获取虚拟变量 features = ['性别','城市','每月家庭收入','就业状况']  
 target = ['有兴趣在线购买的产品']model_data = pd.get_dummies(data[features])  
 model_target = pd.get_dummies(data[target])# 因为我们发现年龄是我们分析中的一个重要因素,所以我们也将其包括在内。 model_data = pd.concat([model_data, data['Age']], axis=1)train_X, test_X, train_y, test_y = train_test_split(model_data, model_target, test_size=0.2, random_state=1)model = RandomForestClassifier(n_estimators=100 , max_depth=11, random_state=1)  
 model.fit(train_X, train_y) 准确度分数(test_y,model.predict(test_X))* 10030.0

所以,结果一点都不好,但我并不意外,为什么?主要有两个原因:
1. 如前所述,数据量太少。
2. 数据集有偏差,我们无法捕捉到真实场景,数据集有些偏差。

但是我们仍然尝试通过一些统计测试(例如卡方检验)使其变得更好,但这并没有太大帮助。

在执行卡方检验时,我们发现 Gender and Employment Status 属性很容易被拒绝。

 # 这里我们只取分类变量来获取虚拟变量  
 features = ['城市','每月家庭收入']  
 target = ['有兴趣在线购买的产品'] model_data = pd.get_dummies(数据[特征])  
 model_target = pd.get_dummies(数据[目标]) model_data = pd.concat([model_data, data['Age']], axis=1) train_X, test_X, train_y, test_y = train_test_split(model_data, model_target, test_size=0.2, random_state=1) 模型 = RandomForestClassifier(n_estimators=100, max_depth=11, random_state=1)  
 model.fit(train_X, train_y) 准确度得分(test_y,model.predict(test_X))* 10037.5

结论

  1. 年龄,城市和家庭月收入 事实证明 是 决定 从 网上 商店 购买 什么 的 最 重要 因素 .
  2. 数据量在决定数据科学项目的成功与否方面起着非常重要的作用。
  3. 数据不能有偏见,我们应该尽量收集或包含能捕捉到整个场景真实画面的数据。

所以,谢谢各位读者,希望你们喜欢这篇文章,虽然结果不达标,但是却带来了很多的学习,这就是残酷的现实。如果您喜欢这篇文章,请分享给您的朋友和同事。见极客!

如果您觉得这篇文章有帮助,请考虑留下小费。感谢您的阅读,祝您求职顺利!

给我买杯咖啡,这样我就可以为我的猫做手术了: ** https://www.buymeacoffee.com/botservices**

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/1572/56072917

posted @ 2022-08-29 17:56  哈哈哈来了啊啊啊  阅读(90)  评论(0编辑  收藏  举报