Menu
CoddyTech

クラスをプロットする

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 55/60。

クラスごとに別々の雲を形成していますか?target_namesから名前を付けて、クラスごとに散布図を1つずつ描きましょう:

がく片の長さと幅で示したアヤメの花。種ごとに色分け: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色で1つの散布図に描いているからです。

  1. その散布図をクラスごとに1つずつに置き換えます。横軸はmean radius、縦軸はmean concave pointsにします。
  2. それぞれに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()
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ