实现该项目的流程如下
""" 项目:用户对物品类别的喜好细分(菜篮子分析) 主算法: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:该随笔是作者一边学习一边写的,里面有一些自己的拙见,如果有错误或者哪里可以改正的话,还请大家指出并批评改正!)