クラスをプロットする
CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 55/60。
クラスごとに別々の雲を形成していますか?target_namesから名前を付けて、クラスごとに散布図を1つずつ描きましょう:
その背後にあるコード:
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のすべてのデータを、1色で1つの散布図に描いているからです。
- その散布図をクラスごとに1つずつに置き換えます。横軸は
mean radius、縦軸はmean concave pointsにします。 - それぞれに
target_namesからクラス名を付けます。
用意されている行はそのままにしてください。あなたのグラフは、別の2つの測定値から描いたこのグラフのようになるはずです。
プログラムは何も出力しません。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オンラインコンパイラ