Проекции
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 25 из 51.
Проекция опускает каждую точку прямо на линию, словно тень. Вот двойники вин из урока «Слишком много признаков», расположенные вокруг своего среднего значения, на двух линиях:
Вдоль облака тени сохраняют большую часть разброса, поэтому одного числа для каждого вина почти достаточно, как и двух.
Направление — это два числа, квадраты которых в сумме дают 1, например (0.6, 0.8). Тень — это взвешенная сумма:
centered = X - X.mean(axis=0)
shadow = centered[:, 0] * 0.6 + centered[:, 1] * 0.8
print(round(shadow.std(), 3))Это выводит 1.136. Лучшее направление сохраняет наибольший разброс.
Задание
СреднеЛеснику нужно одно число для каждой сосновой шишки вместо длины и ширины. Какое из двух направлений сохраняет больший разброс шишек? Программа считывает два направления, по два числа в каждом.
- Напиши
spread_along(direction): стандартное отклонение теней шишек в этом направлении. - Выведи оба значения разброса с точностью до 3 знаков после запятой.
- Выведи направление, которое нужно оставить.
Для других шишек:
Along [0.6, 0.8]: spread 2.104
Along [0.8, -0.6]: spread 0.412
Keep [0.6, 0.8]Попробуйте сами
import numpy as np
import pandas as pd
# Лесничий измерил 70 сосновых шишек: их длину и ширину в см
cones = pd.read_csv("cones.csv")
X = np.column_stack([cones["length_cm"], cones["width_cm"]])
first = [float(input()), float(input())]
second = [float(input()), float(input())]
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставкиПотренируйтесь самостоятельно: Онлайн-компилятор Python