博客
关于我
机器学习入门研究(十七)— Instacart Market用户分类
阅读量:518 次
发布时间:2019-03-07

本文共 1994 字,大约阅读时间需要 6 分钟。

1. 获取数据

本文将围绕如何通过分析Instacart的市场篮蔬果订单数据,预测用户的购物行为展开。为此,我们首先需要获取并整合相关数据集。

  • order_products__prior.csv:该文件包含订单与商品信息,字段包括order_id、product_id、add_to_cart_order和reordered。我们可以使用Pandas读取该数据,为:
  • order_products = pd.read_csv("order_products__prior.csv")
    1. products.csv:该文件包含商品信息,字段包括product_id、product_name、aisle_id和department_id。读取方式如下:
    2. products = pd.read_csv("products.csv")
      1. orders.csv:该文件包含用户订单信息,字段包括order_id、user_id、eval_set、order_number等。读取代码为:
      2. orders = pd.read_csv("orders.csv")
        1. aisles.csv:该文件描述了商品所属具体分类,字段包括aisle_id和aisle。读取代码如下:
        2. aisles = pd.read_csv("aisles.csv")

          通过上述步骤,我们成功获取了订单数据、商品数据以及用户及订单信息。在实际应用中,这些数据需要分别存储,并确保字段一致性,以便于后续操作。

          2. 合并数据

          为了使用户的购物行为能够与商品分类关联起来,我们需要将用户信息与商品类别进行整合。为此,可以按照以下步骤进行:

        3. 合并aisles和products表:两个表都包含aisle_id字段,可以通过merged函数进行内连接:

          tab1 = pd.merge(aisles, products, on=["aisle_id"])

          合并后的表将包含aisle_id、product_id、aisle、product_name等字段。

        4. 将order_products与tab1表合并:目标是将商品与用户的历史订单信息关联起来:

          tab2 = pd.merge(tab1, order_products, on=["product_id"])

          此时,tab2表中将包含aisle_id、aisle、user_id(该字段需要进一步关联)等信息。

        5. 关联orders表:用户的订单信息(user_id)和商品的分类信息(aisle_id)还需要通过order_id进行关联。可以通过以下步骤完成:

          tab3 = pd.merge(tab2, orders, on=["order_id"])

          这样我们就能将用户ID与商品类别直接关联起来。

        6. 生成交叉表:最终目标是将用户ID作为行标签、商品类别作为列标签,生成一个用户-商品类别的频率矩阵。可以使用pandas.crosstab进行操作:

          table = pd.crosstab(tab3["user_id"], tab3["aisle"])

          这将生成一个矩阵,其中行为用户ID,列为商品类别,值为对应类别的购买频率。

        7. 3. 数据降维

          在现有的134个特征中,许多特征的值可能存在冗余或为零。因此,我们可以通过PCA(主成分分析)对数据进行降维。

        8. 实例化转换器:首先需要选择保留的主成分数量,通常建议超过95%的方差:

          from sklearn.decomposition import PCA# 实例化转换器,设置保留的主成分数量transfer = PCA(n_components=0.95)
        9. 应用转换器:使用fit_transform方法将数据转换过去:

          data_new = transfer.fit_transform(table)

          经过转换后,数据将降低维度至44个。

        10. 4. 使用K-means进行分类

          由于我们的目标是无监督分类,我们将使用K-means算法,将用户分为若干类别。假设我们选择将用户分为3类,具体步骤如下:

        11. 实例化K-means模型:

          from sklearn.cluster import KMeansestimator = KMeans(n_clusters=3)
        12. 训练模型并预测:

          estimator.fit(data_new)y_predict = estimator.predict(data_new)

          这将为每个用户分配一个类别标签,0、1或2。

        13. 评估模型:通过查看预测结果,验证模型的性能。此外,可以进一步计算中心点,以了解各类别的代表性。

        14. 总结

          通过以上步骤,我们成功地将用户的购物行为数据转化为了可分析的特征,并通过降维技术将复杂度降低为更少的维度。随后,K-means算法实现了用户的无监督分类,为后续的精度优化和应用提供了基础。

    转载地址:http://pjejz.baihongyu.com/

    你可能感兴趣的文章
    python | 深入理解Python并发编程中的GIL限制与解决方案
    查看>>
    Python | 爬虫实战——亚马逊搜索页监控(附详细源码)
    查看>>
    python | 高效使用Python工具自动生成模块文档的秘诀
    查看>>
    python 一个list去除另一个list中的值
    查看>>
    python 三大框架的 介绍。
    查看>>
    Python 下载的 11 种姿势,一种比一种高级!
    查看>>
    python读取一个文件夹下所有图片_初学Python-找出文件夹下的所有图片
    查看>>
    Python 中 3 个不可思议的返回功能
    查看>>
    python 中 dict 的另一种用法
    查看>>
    Python 中 PIL 读取图片出现异常旋转的解决方法
    查看>>
    Python 中只有一个 True 和一个 False 对象吗?
    查看>>
    python读取mtcars数据集并实现以下操作_关于数据处理。。,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
    查看>>
    Python 中多线程与多处理之间的区别
    查看>>
    Python 中如何使用 lambda 函数
    查看>>
    Python 中如何创建多行字符串?
    查看>>
    Python 中如何处理异常?
    查看>>
    Python 中如何实现列表的切片?
    查看>>
    Python 中的装饰器是什么?
    查看>>
    Python 中的装饰器是如何工作的,有哪些实际应用场景?
    查看>>
    python请求html_使用Python请求获取HTML?
    查看>>