• 采用PCA算法&KMeans算法来实现用户对物品类别的喜好细分(菜篮子分析)(附带数据集下载)


    实现该项目的流程如下

    复制代码
    """
    项目:用户对物品类别的喜好细分(菜篮子分析)
    
    主算法:PCA降维算法
           KMeans算法
        
    总思路
        1、导包
        2、获取数据
        3、数据处理
        5、特征工程(使用PCA降维)
       6、使用KMeans算法进行模型训练
       7、模型评估

    """
    复制代码

     

    First of all!!导包

    复制代码
    # 1、导包
    
    import pandas as pd #读取数据用
    from sklearn.decomposition import PCA # PCA算法,用于把一些没必要的特征删除
    from sklearn.cluster import KMeans # 用来进行无目标值训练,即无监督学习
    from sklearn.metrics import silhouette_score # 衡量无监督学习的模型是否优秀
    复制代码

     

     

    然后就是导入数据啦

    复制代码
    # 2、获取数据
    
    order_products = pd.read_csv("order_products__prior.csv")
    products = pd.read_csv("products.csv")
    orders = pd.read_csv("orders.csv")
    aisles = pd.read_csv("aisles.csv")
    复制代码

    这里提供数据集的下载(百度网盘)(数据很大,不要用流量!!)

    链接:https://pan.baidu.com/s/1k-_rvVhc_tjUB8GLFkYlDw
    提取码:pq95

     

    接着就是最爱的数据处理环节了

    复制代码
    # 数据处理
    # 合并表:.merge(),连接两个DataFrame并返回连接之后的DataFrame,每个参数有不同的结果,详情请自行搜索
        # 目的是将user_id与aisles连接在一起
    
    tab1 = pd.merge(aisles,products,on=['aisle_id','aisle_id'])
    tab2 = pd.merge(order_products,tab1,on=['product_id','product_id'])
    tab3 = pd.merge(orders,tab2,on=['order_id','order_id'])
    
    # 找到user_id和aisle之间的关系
    # .crosstab()是实现交叉表
    
    data = pd.crosstab(tab3["user_id"],tab3["aisle"])
    data = tab[:10000] # 偷懒减数【手动滑稽】
    复制代码

     

    下一步是进行降维了

    复制代码
    # PCA降维
    
    # 实例化转换器
    transfer = PCA(n_components=0.95)
    
    # 调用函数
    data_new = transfer.fit_transform(data)
    复制代码

     

    接着就是进行模型训练了

    # 预估器流程
    
    estimator = KMeans(n_clusters=3) # n_clusters是用来决定分类的类别数
    estimator.fit(data_new)

     

    最后就是模型评估啦

    # 模型评估
    
    # 查看轮廓系数
    print("轮廓系数为:",silhouette_score(data_new,estimator.predict(data_new)))

     

    以上就是作者对于本项目的一些基本实现啦

    (ps:该随笔是作者一边学习一边写的,里面有一些自己的拙见,如果有错误或者哪里可以改正的话,还请大家指出并批评改正!)

     

  • 相关阅读:
    CUDA、cudNN 、CUDAToolKit三者关系
    Shell基础— Bash的基本功能(二)
    Java框架总结(高淇java300集+入门笔记)
    【Linux网络编程】服务器程序框架
    2022.08.08_每日一题
    WinDbg 远程调试遇到IP为:169.254.xx.xx 的处理
    三翼鸟:看得见的数字,看不见的五大能力
    微信小程序
    支付宝沙箱超详细教程+避雷经验,看这篇就够了
    【考研数学】七. 曲线积分
  • 原文地址:https://www.cnblogs.com/zrold/p/17601650.html