天天看點

機器學習:降維案例(探究使用者物品類别喜好細分降維)

探究使用者物品類别喜好細分降維資料:

資料是在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

繼續閱讀