기계 학습의 기초: "특성 엔지니어링(5) - 특성 차원 축소 - 사례"

1. 아이템 카테고리에 대한 사용자 선호도 탐색

1. 사용자와 품목 카테고리 간의 관계를 찾습니다.
데이터는 다음과 같습니다.
(1) order_products__prior.csv: 주문 및 상품 정보
필드: order_id, product_id, add_to_cart_order, reordered
(2) products.csv: 상품 정보
필드: product_id, product_name, aisle_id, Department_id
(3) Orders.csv: 사용자의 주문 정보
필드: order_id, user_id, eval_set, order_number,...
(4) aisles.csv: 제품이 속한 특정 품목 카테고리
Fields: aisle_id, aisle
( 5) aisle은 통로를 의미하는데, 왜 aisle이 품목의 범주를 나타낼 수 있습니까?슈퍼마켓의 한 통로에는 기본적으로 동일한 유형의 상품이 있기 때문입니다.

2. 필드
사용자 항목 카테고리
user_id aisle
(1) User_id와 aisle은 동일한 테이블에 배치되어야 합니다. - 병합
(2) user_id와 aisle 찾기 - pandas의 크로스탭 및 피벗 테이블
(3) 필요한 중복 기능이 너무 많습니다. to be Reduce Dimension - PCA 차원 축소
(4) 이 데이터는 Kaggle에서 직접 다운로드해야 합니다.

2. 주피터 노트북 설치

1, 安装
yum install make gcc gcc-c++
python3 -m pip install --upgrade pip
pip install 노트북

2. jupyter 노트북 시작
--allow-root --ip 192.168.1.100

3. 프롬프트에 따라
http://192.168.1.100:8888/?token=04c3869ea51b908486ae5e3c4d4fd5a7b1021904a57e78ff 에 액세스합니다.

3. Jupyter가 day01_instacart_pca를 생성합니다.

# 1、获取数据
# 2、合并表
# 3、找到user_id和aisles之间的关系
# 4、PCA降维

import pandas as pd

# 1、获取数据
order_products = pd.read_csv("./order_products__prior.csv")
products = pd.read_csv("./products.csv")
orders = pd.read_csv("./orders.csv")
aisles = pd.read_csv("./aisles.csv")

# 2、合并表
# 合并aisles.csv和products.csv表
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"])

#head()是获取dataframe的前5行数据
tab3.head()

# 3、找到user_id和aisles之间的关系
table = pd.crosstab(tab3["user_id"], tab3["aisle"])

table.head()

# 4、PCA降维
from sklearn.decomposition import PCA

# 1)实例化一个转换器类
transfer = PCA(n_components=0.95)
# 2)调用fit_transform
table_new = transfer.fit_transform(table)

table_new.shape

# 降维留下了44个特征,同时保留了95%的信息

table_new

おすすめ

転載: blog.csdn.net/csj50/article/details/132231480