Menu
CoddyTech

两个最佳特征

本课属于 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,第二个特征就会重复第一个特征,几乎不会增加任何新内容。

challenge icon

挑战

中等

error 特征用于衡量一个样本中各细胞的测量值变化有多大。最强的两个特征能区分不同类别吗?起始代码会将它们按强度排序,分别存入 first 和 second;label(ax) 用于标注图表。

  1. 打印 r between them: 和它们的 r 值,保留 2 位小数。
  2. 为每个类别绘制一个散点图,横轴使用 first,并用类别名称标注。
  3. 调用 label(ax),添加图例并显示图表。

例如,最强的 worst 特征对(r 为 0.82):

标题为 Worst Features 的散点图,横轴为 worst concave points,纵轴为 worst perimeter;恶性样本聚集在右上方,显示为蓝色;良性样本聚集在左下方,显示为橙色

然后看看你的图表:样本云团是否分开?结合你的 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)


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

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

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

自己练习: Python 在线编译器