유사도 측정하기
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 2번째.
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의 거리 표를 만드세요.- 가장 비슷한 쌍과 가장 다른 쌍을 찾으세요. 각 쌍은 한 번만 찾고, 스무디 하나와 자기 자신을 짝짓지 마세요.
- 두 쌍 모두 이름은 메뉴 순서대로, 거리는 소수점 첫째 자리까지 출력하세요.
다른 메뉴의 경우:
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]])
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러