1. 程式人生 > 實用技巧 >機器學習進度03(instacart降維案例、總結)

機器學習進度03(instacart降維案例、總結)

案例:探究使用者對物品類別的喜好細分降維

資料如下:

  • 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

需求:

分析

  • 合併表,使得user_id與aisle在一張表當中
  • 進行交叉表變換
  • 進行降維

完整程式碼

#案例
def anli():
    # 1、獲取資料集
    # ·商品資訊- products.csv:
    # Fields:product_id, product_name, aisle_id, department_id
    # ·訂單與商品資訊- order_products__prior.csv:
    # Fields:order_id, product_id, add_to_cart_order, reordered
    # ·使用者的訂單資訊
- orders.csv: # Fields:order_id, user_id,eval_set, order_number,order_dow, order_hour_of_day, days_since_prior_order # ·商品所屬具體物品類別- aisles.csv: # Fields:aisle_id, aisle products = pd.read_csv("./instacart/products.csv") order_products = pd.read_csv("./instacart/order_products__prior.csv
") orders = pd.read_csv("./instacart/orders.csv") aisles = pd.read_csv("./instacart/aisles.csv") # 2、合併表,將user_id和aisle放在一張表上 # 1)合併orders和order_products on=order_id tab1:order_id, product_id, user_id tab1 = pd.merge(orders, order_products, on=["order_id", "order_id"]) # 2)合併tab1和products on=product_id tab2:aisle_id tab2 = pd.merge(tab1, products, on=["product_id", "product_id"]) # 3)合併tab2和aisles on=aisle_id tab3:user_id, aisle tab3 = pd.merge(tab2, aisles, on=["aisle_id", "aisle_id"]) # 3、交叉表處理,把user_id和aisle進行分組 table = pd.crosstab(tab3["user_id"], tab3["aisle"]) # 4、主成分分析的方法進行降維 # 1)例項化一個轉換器類PCA transfer = PCA(n_components=0.95) # 2)fit_transform data = transfer.fit_transform(table) print("形狀:\n",data.shape) return None if __name__=="__main__": anli()

總結:

1、資料集的結構是什麼?

答案: 特徵值+ 目標值

2、機器學習演算法分成哪些類別? 如何分類

答案: 根據是否有目標值分為 監督學習和非監督學習監督學習

根據目標值的資料型別:目標值為離散值就是分類問題

​ 目標值為連續值就是迴歸問題

3、什麼是標準化? 和歸一化相比有什麼優點?

答案: 標準化是通過對原始資料進行變換把資料變換到均值為0,方差為1範圍內

​ 優點: 少量異常點, 不影響平均值和方差, 對轉換影響小