案例:探究用户对物品类别的喜好细节
用户 物品类别
user_id aisle
步骤:
1)需要将user_id和aisle放在同一表中--合并
2)找到user_id和aisle --交叉和透视表
3)特征冗余过多 -- PCA降维
import pandas as pd
aisles =pd.read_csv("./in/aisles.csv")
products = pd.read_csv("./in/products.csv");
orders = pd.read_csv("./in/orders.csv");
order_products = pd.read_csv("./in/order_products__prior.csv")
# 2、合并表
# order_products_prior.csv 订单与商品信息
#字段:order_id,product_id,add_to_cart_order,reordered
#products 商品信息
#字段:product_id,product_name,aisle_id,department_id
#orders订单信息
#字段:order_id,user_id,eval_set,order_number,order_dow,order_hour_of_day,days_since_prior_order
#aisles 商品所属类别
#字段:aisle_id,aisle
#合并aisles和products==》aisle_id
tab1 = pd.merge(aisles,products,on=["aisle_id","aisle_id"])
tab2 = pd.merge(tab1,order_products,on=["product_id","product_id"])
tab3 = pd.merge(tab2,orders,on=["order_id","order_id"])
tab3.head()
table = pd.crosstab(tab3["user_id"],tab3["aisle"])
运行结果:
#数据太多,只要10000行
data = table[:10000]
data
#很多0降维
#pca降维
from sklearn.decomposition import PCA
#1实例化一个转换器类
transfer = PCA(n_components = 0.95)
#2.调用fitt_ransform
data_new = transfer.fit_transform(data)
data_new.shape
data_new