Menu
CoddyTech

Phương sai được giải thích

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 27 trên 51.

2 thành phần giữ lại được bao nhiêu? Mỗi thành phần chiếm một phần trong tổng độ phân tán, gọi là tỷ lệ phương sai được giải thích. Với cả 13 thành phần của rượu vang:

Các cột biểu thị 13 thành phần của rượu vang, giảm từ 0.36 xuống gần 0, cùng một đường màu cam cộng dồn các giá trị, tăng từ 0.36 lên 1. Đường này cắt đường nét đứt ở mức 90% tại thành phần thứ 8

PCA() không có n_components sẽ giữ lại tất cả. np.cumsum cho biết tổng tích lũy:

pca = PCA().fit(scaled)
ratio = pca.explained_variance_ratio_
print(ratio[:3].round(3))
total = np.cumsum(ratio)
print((total < 0.9).sum() + 1)

Lệnh này in ra [0.362 0.192 0.111] và 8: các tổng vẫn dưới 0.9, cộng thêm lần đầu vượt ngưỡng. Vì vậy, bản đồ rượu vang 2D giữ lại 55%.

challenge icon

Thử thách

Trung bình

Phòng thí nghiệm sô-cô-la đo 9 thông số cho mỗi thanh. Có bao nhiêu thành phần giữ lại 90% độ phân tán? scaled đã sẵn sàng.

  1. Khớp PCA() và lấy tỷ lệ của từng thành phần.
  2. In ra số thành phần đạt 90%.
  3. Vẽ tỷ lệ thành các cột tại vị trí 1, 2, 3..., với nhãn each component; vẽ tổng lũy kế thành đường với marker="o", có nhãn running total; vẽ đường gạch màu xám tại 0.9 và thêm chú giải. Hiển thị biểu đồ.

Với một phòng thí nghiệm khác:

Components for 90%: 4

Biểu đồ có tiêu đề Mức độ phân tán được giữ lại bởi từng thành phần, gồm 7 thành phần: các cột giảm dần từ 0.42, tổng lũy kế tăng lên 1 và cắt đường gạch 0.9 tại thành phần 4, cùng chú giải

Tự làm thử

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# Phòng thí nghiệm của người làm sô cô la: 9 phép đo cho mỗi thanh trong số 150 thanh
bars = pd.read_csv("chocolate.csv")
scaled = StandardScaler().fit_transform(bars)

fig, ax = plt.subplots()
ax.set_title("Spread Kept by Each Component")
ax.set_xlabel("Component")
ax.set_ylabel("Share of spread")

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch Python online