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

 

发表评论

评论已关闭。

相关文章