Menu
CoddyTech

Построение графиков классов

Часть раздела Данные и графики путешествия по Machine Learning на Coddy. Урок 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