Menu
CoddyTech

绘制类别图

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 55 课,共 60 课。

这些类别是否形成了彼此分开的点云?为每个类别分别绘制一个散点图,并使用 target_names 中的名称:

按萼片长度和宽度展示的鸢尾花,每个物种用一种颜色表示:setosa 在左上方形成独立的点云,而 versicolor 和 virginica 在中间和右侧重叠

背后的代码:

df = iris.frame
fig, ax = plt.subplots()
for i in range(3):
    group = df[df["target"] == i]
    ax.scatter(group["sepal length (cm)"], group["sepal width (cm)"], label=iris.target_names[i])
ax.set_title("Iris flowers by sepal size")
ax.set_xlabel("sepal length (cm)")
ax.set_ylabel("sepal width (cm)")
ax.legend()
plt.show()

每次调用都会使用自己的颜色,而 label=iris.target_names[i] 会将 0、1 和 2 转换为图例中的名称。

Setosa 与其他类别明显不同;versicolor 和 virginica 存在重叠。数据云重叠的地方,就是模型容易出错的地方。

challenge icon

挑战

中等

恶性样本和良性样本会形成不同的点云吗?队友的图表无法说明这一点:它用一种颜色通过一次散点绘制了所有 load_breast_cancer 数据。

  1. 把这次散点绘制改成每个类别绘制一次:横轴为 mean radius,纵轴为 mean concave points。
  2. 用 target_names 中的类别名称为每个类别添加标签。

保留准备好的代码行。你的图应该像下面这张图一样,根据另外两项测量绘制:

按平均纹理和平均平滑度绘制的乳腺组织样本散点图,恶性样本为蓝色,良性样本为橙色,图例标出了这两个类别

你的程序不会打印任何内容:Coddy 会检查图表并描述它。

亲手试试

import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer(as_frame=True)
df = cancer.frame

# 不要改动下面这行代码
fig, ax = plt.subplots()

# 在这里修复代码
ax.scatter(df["mean radius"], df["mean concave points"])

# 不要改动下面几行代码
ax.set_title("Cells by Diagnosis")
ax.set_xlabel("mean radius")
ax.set_ylabel("mean concave points")
ax.legend()
plt.show()
quiz icon自我测试

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

数据与图表中的所有课

自己练习: Python 在线编译器