Измерение сходства
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 2 из 51.
В k-NN ближайшим считалось то, что находилось на наименьшем расстоянии. Чтобы найти группы, нужно вычислить его для каждой пары строк: составить таблицу расстояний. Четыре друга оценили два фильма по шкале от 1 до 10:
ratings = np.array([[9, 2], [8, 3], [2, 9], [3, 7]]) # Ana, Ben, Cy, Dee
n = len(ratings)
table = np.zeros((n, n))
for i in range(n):
table[i] = np.sqrt(((ratings - ratings[i]) ** 2).sum(axis=1))Строка i содержит расстояние от друга i до каждого. Вот table, представленная в виде сетки:
Пропусти диагональ с 0: каждый друг сравнивается сам с собой. Самое маленькое оставшееся число соответствует наиболее похожей паре, а самое большое — наиболее различной. Маленькое расстояние — похожие строки.
Задание
ЛегкоСмузи от шеф-повара, рецепт которого программа считывает, добавляют в меню сок-бара. Какие два смузи настолько похожи, что один из них можно убрать? Какие два наиболее различаются для дегустационного сета?
- Построй таблицу расстояний для
menu. - Найди наиболее похожую и наиболее различающуюся пару: каждую пару учитывай один раз, не сравнивай смузи с самим собой.
- Выведи обе пары, расположив названия в порядке меню, а расстояния округли до 1 знака после запятой.
Для другого меню:
Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)Попробуйте сами
import numpy as np
names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Одна строка на каждый смузи, граммов на стакан: фрукты, зелень, йогурт
menu = np.array([[180, 0, 120],
[90, 110, 60],
[160, 0, 150],
[60, 150, 30],
[200, 20, 40],
[100, 0, 200],
[170, 40, 0]])
# Новый рецепт шеф-повара добавляется в меню последней строкой
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставкиПотренируйтесь самостоятельно: Онлайн-компилятор Python