Menu
CoddyTech

特征与标签的关系

本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 58 课,共 64 课。

哪些特征会随标签一起变化?计算每个特征与标签的相关性,恶性为 0,良性为 1,并按强度排序:

组织数据中 10 个平均特征的 r 值横向条形图,最强的特征排在最上方:平均凹点 -0.78、平均周长 -0.74、平均半径 -0.73,依次递减,平均分形维数为 0.01

X.corrwith(y) 一次性给出每个特征的 r 值:

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))

这会打印:

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

负的 r 表示该特征在类别 0 中更大:恶性细胞有更多凹点。np.abs 按强度排序,不受正负号影响。

接近 0 时,和分形维数一样,这个特征在各类别之间几乎没有差异:可以考虑将其排除。

challenge icon

挑战

中等

模型应该先尝试哪些组织特征?输入包括一个组、error 或 worst,以及 k;起始代码会将该组的特征放入 X。

  1. 根据特征与 y 的 r 值强度对特征进行排序。
  2. 打印前 k 个特征及其带符号的 r 值,保留 2 位小数。
  3. 检查符号:打印最强特征在各类别中的均值。

对于 mean 组,且 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

亲手试试

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
# 该组的 10 个特征:mean、error 或 worst
start = {"mean": 0, "error": 10, "worst": 20}[group]
X = cancer.data[cancer.feature_names[start:start + 10]]

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

机器学习统计学中的所有课

自己练习: Python 在线编译器