PCA
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 26 trên 51.
PCA tìm hướng có độ phân tán lớn nhất, rồi tìm hướng tốt nhất vuông góc với hướng đó, cứ thế tiếp tục: các thành phần. Với hai điểm dữ liệu rượu vang song sinh:
Bóng chiếu của mỗi hàng lên một vài thành phần đầu tiên trở thành các đặc trưng mới của hàng đó:
from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)Với cả 13 phép đo rượu vang, câu lệnh này in ra (178, 13) (178, 2).
Trước tiên, hãy chuẩn hóa tỷ lệ. PCA tập trung vào độ phân tán, nên một đặc trưng có đơn vị lớn, như hàm lượng proline lên đến hàng trăm, sẽ chiếm ưu thế chỉ nhờ độ lớn:
Thử thách
Trung bìnhMột phòng thí nghiệm nước kiểm tra các chai nước lấy từ ba suối, mỗi chai có 8 phép đo. Bản đồ 2D có thể giúp phân biệt các suối không? draw_springs(ax, points) tô màu các điểm 2D theo suối.
- Chuẩn hóa
X, rồi dùng PCA giảm xuống còn 2 thành phần, lưu vàopoints. - In ra số lượng đặc trưng trước và sau khi giảm.
- Vẽ các điểm bằng
draw_springsrồi hiển thị biểu đồ.
Với một phòng thí nghiệm khác, có 6 phép đo:
From 6 features to 2Coddy mô tả bản đồ của bạn.
Tự làm thử
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# Phòng thí nghiệm nước: 8 số đo cho mỗi chai trong số 120 chai từ ba nguồn suối
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")
# Vẽ các điểm 2D, mỗi nguồn suối một nhóm, kèm chú giải
def draw_springs(ax, points):
for spring in ["alpine", "volcanic", "coastal"]:
rows = (waters["spring"] == spring).to_numpy()
ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")
# Viết code của bạn 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