赞
踩
数据是在kaggle中找的。https://www.kaggle.com/c/instacart-market-basket-analysis/data
products.csv 商品信息
order_products__prior.csv 订单与商品信息
orders.csv 用户的订单信息
aisles.csv 商品所属具体物品类别
首先合并各张表在一张表中。merge()函数
在合并表的时候要分清楚表中字段是什么,按什么字段进行合并。
prior表中有:product_id ,order_id
products表中: product_id ,aisle_id
orders表中有:order_id ,user_id
aisles表中: aisles_id,aisle
找到相同字段进行合并。
代码运行是在jupyter中,这里代码我贴在python代码块中
import pandas as pd from sklearn.decomposition import PCA from sklearn.cluster import KMeans import matplotlib.pyplot as plt from sklearn.metrics import silhouette_score # 读取四张表的数据 prior = pd.read_csv("./data/instacart/order_products__prior.csv") products = pd.read_csv("./data/instacart/products.csv") orders = pd.read_csv("./data/instacart/orders.csv") aisles = pd.read_csv("./data/instacart/aisles.csv") # 合并四张表到一张表 (用户-物品类别) _mg = pd.merge(prior, products, on=['product_id', 'product_id']) _mg = pd.merge(_mg, orders, on=['order_id', 'order_id']) mt = pd.merge(_mg, aisles, on=['aisle_id', 'aisle_id']) #显示合并后的前十条 mt.head(10) # 交叉表(特殊的分组工具) #列就是用户id 行就是物品 cross = pd.crosstab(mt['user_id'], mt['aisle'])
有很多全是0的冗杂信息,这里就需要PCA主成分分析
# 进行主成分分析
pca = PCA(n_components=0.9)
data = pca.fit_transform(cross)
这里可以通过shape去打印看,可以明显看到特征进行了减少。
create by 0125c
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。