PCA trước khi xây dựng mô hình
Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 32 trên 51.
Ít đặc trưng hơn giúp mô hình chạy nhanh hơn và giảm lượng nhiễu mà nó phải xử lý. PCA có thể nằm trong một pipeline, ngay trước mô hình:
for n in [2, 5, 10, 20, 40, 64]:
model = make_pipeline(PCA(n_components=n), KNeighborsClassifier())
print(n, f"{cross_val_score(model, X, y, cv=5).mean():.3f}")Trên tập dữ liệu digits:
Độ chính xác gần như không đổi khi đạt mức 20: 44 hướng còn lại hầu như không đóng góp gì. Mỗi phần chia đều khớp PCA trên các hàng dữ liệu huấn luyện riêng, vì vậy không có dữ liệu nào bị rò rỉ.
Các đơn vị không đồng nhất? Như mọi khi, hãy đặt StandardScaler() lên trước.
Thử thách
Trung bìnhPhòng thí nghiệm dầu ô liu phân loại dầu dựa trên mức độ hấp thụ ánh sáng ở 36 bước sóng, cùng với 4 xét nghiệm. Cần bao nhiêu đặc trưng (feature) là đủ? Chương trình đọc vào một mức chênh lệch cho phép.
- Với mỗi
ntrongsizes, hãy kiểm định chéo với 5 phần: một quy trình gồm bộ chuẩn hóa, PCA vớinthành phần vàLogisticRegression(max_iter=1000). In ra từng điểm số. - In ra số thành phần ít nhất có điểm số nằm trong mức chênh lệch cho phép so với điểm số cao nhất.
Với một phòng thí nghiệm khác và 0.05:
2 components: 0.817
3 components: 0.833
4 components: 0.889
5 components: 0.928
10 components: 0.928
20 components: 0.917
40 components: 0.922
Fewest within 0.05 of the best: 4 componentsTự làm thử
import pandas as pd
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
# 180 mẫu dầu ô liu: độ hấp thụ ánh sáng ở 36 bước sóng, 4 xét nghiệm trong phòng thí nghiệm và phân hạng
oils = pd.read_csv("oils.csv")
X = oils.drop(columns=["oil", "grade"])
y = oils["grade"]
sizes = [2, 3, 4, 5, 10, 20, 40]
slack = float(input())
# Viết code bên dưới
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Học không giám sát
1Tìm các nhóm
Học không cần nhãnĐo độ tương đồngTự thực hiện K-MeansK-Means trong scikit-learnÔn tập: thành viên phòng gym7PCA trong thực tế
Quan sát 64 chiềuCác thành phần như mẫu hìnhNén và dựng lạiPCA trước khi xây dựng mô hìnhÔn tập: máy quét khuôn mặt10Dự án: Khám phá chữ số
Quan sát các chữ sốThu gọn bằng PCAPhân cụm chữ sốĐặt tên cho các cụmTìm những chữ số khác biệt2Chọn k
Quán tínhPhương pháp khuỷu tayĐiểm số SilhouetteChuẩn hóa thang đo trước khi phân cụmÔn tập: Các vùng giao hàngTự luyện tập: Trình biên dịch Python online