Menu
CoddyTech

Đối chiếu đặc trưng với nhãn

Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 58 trên 64.

Những đặc trưng nào biến thiên cùng với nhãn? Tính tương quan của từng đặc trưng với nhãn, trong đó 0 là ác tính và 1 là lành tính, rồi xếp hạng theo độ mạnh:

Các thanh ngang biểu thị hệ số r của mười đặc trưng trung bình trong dữ liệu mô, đặc trưng mạnh nhất ở trên cùng: số điểm lõm trung bình -0.78, chu vi trung bình -0.74, bán kính trung bình -0.73, giảm dần đến độ phức tạp phân dạng trung bình ở mức 0.01

X.corrwith(y) trả về hệ số r của mọi đặc trưng cùng lúc:

X = cancer.data[cancer.feature_names[:10]]
r = X.corrwith(cancer.target)
strength = np.abs(r).sort_values(ascending=False)
for name in strength.index[:3]:
    print(name, np.round(r[name], 2))

Kết quả in ra:

mean concave points -0.78
mean perimeter -0.74
mean radius -0.73

Giá trị r âm nghĩa là đặc trưng có giá trị lớn hơn ở lớp 0: tế bào ác tính có nhiều điểm lõm hơn. np.abs xếp hạng theo độ mạnh, bất kể dấu.

Gần 0, giống như chiều fractal, một đặc trưng hầu như không khác biệt giữa các lớp: có thể cân nhắc loại bỏ.

challenge icon

Thử thách

Trung bình

Trước tiên, mô hình nên thử những đặc trưng mô nào? Đầu vào gồm một nhóm, error hoặc worst, và k; đoạn code khởi tạo đưa các đặc trưng của nhóm vào X.

  1. Xếp hạng các đặc trưng theo độ mạnh của hệ số tương quan r với y.
  2. In ra k đặc trưng đứng đầu cùng hệ số tương quan r có dấu, làm tròn đến 2 chữ số thập phân.
  3. Kiểm tra dấu: in ra giá trị trung bình theo lớp của đặc trưng mạnh nhất.

Với nhóm mean và k = 2:

Top 2 mean features:
mean concave points: -0.78
mean perimeter: -0.74
mean concave points by class: malignant 0.09, benign 0.03

Tự làm thử

import numpy as np
from sklearn.datasets import load_breast_cancer

group = input()
k = int(input())
cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# Mười đặc trưng của nhóm: mean, error hoặc worst
start = {"mean": 0, "error": 10, "worst": 20}[group]
X = cancer.data[cancer.feature_names[start:start + 10]]

# 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 Thống kê cho machine learning

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