| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #!/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)
|