Hai loại tế bào
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 51 trên 51.
Một phòng thí nghiệm đã đo 569 mẫu mô, mỗi mẫu gồm 30 phép đo tế bào. Quá nhiều dữ liệu để vẽ biểu đồ, mắt thường cũng không thể phân loại được:
Chẩn đoán của mỗi mẫu, lành tính hay ác tính, được ghi trong một phong bì niêm phong. Các tế bào có thể tự phân loại thành hai nhóm mà không cần biết thông tin đó không?
Giảm 30 phép đo bằng PCA, phân cụm phần còn lại, rồi mới mở phong bì để xem các tế bào đã đến gần nhau đến mức nào.
Thử thách
KhóChương trình đọc tỷ lệ phương sai (variance) cần giữ lại, từ 0.7 trở lên; phần code khởi tạo biểu đồ.
- Chuẩn hóa, rồi giữ lại số thành phần (component) ít nhất sao cho đạt tỷ lệ đó. In ra số lượng và tỷ lệ phương sai được giữ lại.
- Phân cụm các thành phần đó bằng k-means: k = 2,
n_init=10,random_state=0. - Mở phong bì: với mỗi cụm, in ra các chẩn đoán và loại chiếm đa số, theo thứ tự từ cụm lớn nhất. Sau đó tính mức độ trùng khớp: tỷ lệ mẫu có chẩn đoán trùng với loại chiếm đa số trong cụm.
- Vẽ biểu đồ phân tán của hai thành phần đầu tiên trong mỗi cụm, gắn nhãn
mostly benignhoặcmostly malignant; thêm chú giải rồi hiển thị biểu đồ.
Với 300 mẫu đầu tiên và 0.8:
Components for 80% of the variance: 5 (they keep 0.844)
Cluster of 175: 146 benign, 29 malignant, so mostly benign
Cluster of 125: 8 benign, 117 malignant, so mostly malignant
Agreement with the diagnosis: 0.877và biểu đồ tương ứng:
Sau đó Coddy mô tả kết quả của bạn.
Tự làm thử
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# 569 mẫu mô, mỗi mẫu có 30 phép đo tế bào
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# Phong bì niêm phong: mỗi mẫu là lành tính hay ác tính. Chỉ mở vào cuối cùng.
diagnosis = pd.Series(cancer.target_names[cancer.target])
# Tỷ lệ phương sai cần giữ lại, từ 0.7 trở lên
share = float(input())
fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# 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