#!/usr/bin/env python # coding: utf-8 # In[24]: # 1、获取数据 # 2、合并表 # 3、找到user_id和aisle之间的关系 # 4、PCA降维 # In[25]: import pandas as pd # In[26]: # 1、获取数据 order_products = pd.read_csv("../main_01/instacart/order_products__prior.csv") products = pd.read_csv("../main_01//instacart/products.csv") orders = pd.read_csv("../main_01//instacart/orders.csv") aisles = pd.read_csv("../main_01//instacart/aisles.csv") # In[27]: # 2、合并表 # order_products__prior.csv:订单与商品信息 # 字段:order_id, product_id, add_to_cart_order, reordered # products.csv:商品信息 # 字段:product_id, product_name, aisle_id, department_id # orders.csv:用户的订单信息 # 字段:order_id,user_id,eval_set,order_number,…. # aisles.csv:商品所属具体物品类别 # 字段: aisle_id, aisle # 合并aisles和products aisle和product_id tab1 = pd.merge(aisles, products, on=["aisle_id", "aisle_id"]) # In[28]: tab2 = pd.merge(tab1, order_products, on=["product_id", "product_id"]) # In[29]: tab3 = pd.merge(tab2, orders, on=["order_id", "order_id"]) # In[30]: tab3.head() # In[31]: # 3、找到user_id和aisle之间的关系 table = pd.crosstab(tab3["user_id"], tab3["aisle"]) # In[32]: data = table[:10000] # In[33]: # 4、PCA降维 from sklearn.decomposition import PCA # In[34]: # 1)实例化一个转换器类 transfer = PCA(n_components=0.95) # 2)调用fit_transform data_new = transfer.fit_transform(data) # In[35]: data_new.shape # In[36]: data_new # In[37]: # 预估器流程 from sklearn.cluster import KMeans # In[38]: estimator = KMeans(n_clusters=3) estimator.fit(data_new) # In[39]: y_predict = estimator.predict(data_new) # In[40]: y_predict[:300] # In[41]: # 模型评估-轮廓系数 from sklearn.metrics import silhouette_score # In[42]: silhouette_score(data_new, y_predict)