绘制类别图
本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 55 课,共 60 课。
这些类别是否形成了彼此分开的点云?为每个类别分别绘制一个散点图,并使用 target_names 中的名称:
背后的代码:
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 存在重叠。数据云重叠的地方,就是模型容易出错的地方。
挑战
中等恶性样本和良性样本会形成不同的点云吗?队友的图表无法说明这一点:它用一种颜色通过一次散点绘制了所有 load_breast_cancer 数据。
- 把这次散点绘制改成每个类别绘制一次:横轴为
mean radius,纵轴为mean concave points。 - 用
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()
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
数据与图表中的所有课
自己练习: Python 在线编译器