Menu
CoddyTech

Признаки и целевая переменная

Часть раздела Статистика для машинного обучения путешествия по Machine Learning на Coddy. Урок 58 из 64.

Какие признаки изменяются вместе с меткой? Рассчитай корреляцию каждого признака с меткой (0 — злокачественная опухоль, 1 — доброкачественная) и расположи признаки по силе корреляции:

Горизонтальные столбцы значений r для десяти средних признаков данных о тканях, сверху — самые сильные: среднее количество вогнутых точек — -0.78, средний периметр — -0.74, средний радиус — -0.73, далее средняя фрактальная размерность — 0.01

X.corrwith(y) сразу вычисляет r для каждого признака:

X = cancer.data[cancer.feature_names[:10]]
r = X.corrwith(cancer.target)
strength = np.abs(r).sort_values(ascending=False)
for name in strength.index[:3]:
    print(name, np.round(r[name], 2))

Это выводит:

mean concave points -0.78
mean perimeter -0.74
mean radius -0.73

Отрицательное значение r означает, что признак больше в классе 0: у злокачественных клеток больше вогнутых точек. np.abs ранжирует по силе независимо от знака.

Вблизи 0, как и в случае с фрактальной размерностью, признак почти не различается между классами: его можно пропустить.

challenge icon

Задание

Средне

Какие характеристики ткани модели следует проверить в первую очередь? Входные данные — группа, error или worst, и k; в стартовом коде признаки группы помещены в X.

  1. Ранжируй признаки по силе их связи r с y.
  2. Выведи топ k признаков с их знаковыми значениями r, округлёнными до 2 знаков после запятой.
  3. Проверь знак: выведи средние значения самого сильного признака по классам.

Для группы mean и k = 2:

Top 2 mean features:
mean concave points: -0.78
mean perimeter: -0.74
mean concave points by class: malignant 0.09, benign 0.03

Попробуйте сами

import numpy as np
from sklearn.datasets import load_breast_cancer

group = input()
k = int(input())
cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# Десять признаков группы: mean, error или worst
start = {"mean": 0, "error": 10, "worst": 20}[group]
X = cancer.data[cancer.feature_names[start:start + 10]]

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Статистика для машинного обучения

Потренируйтесь самостоятельно: Онлайн-компилятор Python