特征与标签的关系
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 58 课,共 64 课。
哪些特征会随标签一起变化?计算每个特征与标签的相关性,恶性为 0,良性为 1,并按强度排序:
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 时,和分形维数一样,这个特征在各类别之间几乎没有差异:可以考虑将其排除。
挑战
中等模型应该先尝试哪些组织特征?输入包括一个组、error 或 worst,以及 k;起始代码会将该组的特征放入 X。
- 根据特征与
y的 r 值强度对特征进行排序。 - 打印前
k个特征及其带符号的 r 值,保留 2 位小数。 - 检查符号:打印最强特征在各类别中的均值。
对于 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]]
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器