gpt4 book ai didi

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

转载 作者:我是一只小鸟 更新时间:2023-08-02 22:31:13 25 4
gpt4 key购买 nike

实现该项目的流程如下 。

                          
                            """
                          
                          
                            
项目:用户对物品类别的喜好细分(菜篮子分析)

主算法: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:该随笔是作者一边学习一边写的,里面有一些自己的拙见,如果有错误或者哪里可以改正的话,还请大家指出并批评改正!) 。

  。

最后此篇关于采用PCA算法&KMeans算法来实现用户对物品类别的喜好细分(菜篮子分析)(附带数据集下载)的文章就讲到这里了,如果你想了解更多关于采用PCA算法&KMeans算法来实现用户对物品类别的喜好细分(菜篮子分析)(附带数据集下载)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com