两个最佳特征
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 59 课,共 64 课。
这是本章承诺给你看的图:把两个最显著的平均特征放在同一张散点图中,每个类别用一种颜色表示。
良性样本集中在左下方,恶性样本分布在右上方。两片云交汇处,就是使用这对特征的模型容易出错的地方。
再检查一下:这两列是否几乎相同?
first = strength.index[0]
second = strength.index[1]
print(np.round(df[first].corr(df[second]), 2))这会打印 0.85:相关,但不是副本。如果相关性达到 0.99,第二个特征就会重复第一个特征,几乎不会增加任何新内容。
挑战
中等error 特征用于衡量一个样本中各细胞的测量值变化有多大。最强的两个特征能区分不同类别吗?起始代码会将它们按强度排序,分别存入 first 和 second;label(ax) 用于标注图表。
- 打印
r between them:和它们的 r 值,保留 2 位小数。 - 为每个类别绘制一个散点图,横轴使用
first,并用类别名称标注。 - 调用
label(ax),添加图例并显示图表。
例如,最强的 worst 特征对(r 为 0.82):
然后看看你的图表:样本云团是否分开?结合你的 r 值,判断一下。
亲手试试
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# 十个误差特征:每项测量值在同一个样本的不同细胞间变化了多少
X = cancer.data[cancer.feature_names[10:20]]
# 按强度排序:first 和 second 是最强的两个特征
strength = np.abs(X.corrwith(y)).sort_values(ascending=False)
first = strength.index[0]
second = strength.index[1]
# 设置图表标题,并用这对特征的名称标注坐标轴
def label(ax):
ax.set_title("Error Features")
ax.set_xlabel(first)
ax.set_ylabel(second)
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器