Menu
CoddyTech

덴드로그램

Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 18번째.

이 장의 첫 번째 트리는 덴드로그램입니다. 각 괄호는 두 그룹이 합쳐진 높이에서 이들을 연결합니다. 다리가 높을수록 두 그룹은 더 멀리 떨어져 있었습니다.

선을 그어 자르면, 선이 지나가는 가지마다 그룹이 됩니다. 여기서는 4개입니다:

높이 1.2에 점선이 그어진 스포츠 공 트리. 그 아래에 네 그룹이 있습니다: 소프트볼, 크리켓, 야구; 테니스, 탁구, 골프; 농구만 있는 그룹; 배구, 핸드볼, 축구

scipy는 트리를 만들고, 그린 다음, fcluster로 자릅니다:

from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
Z = linkage(scaled, "ward")
dendrogram(Z, labels=names, leaf_rotation=90, color_threshold=1.2, ax=ax)
ax.axhline(1.2, color="gray", linestyle="--")
groups = fcluster(Z, t=1.2, criterion="distance")
print(groups)

이것은 각 공에 대한 그룹 번호를 출력합니다. 농구공만 있습니다:

[2 2 2 1 1 1 3 3 3 4]

가장 긴 변들을 가로질러 자르세요. 아래 그룹들은 서로 멀리 떨어져 있습니다.

challenge icon

챌린지

중급

해양 안내서는 고래와 돌고래 16마리를 길이, 무게, 잠수 깊이에 따라 그룹으로 나눕니다. 시작 코드는 데이터를 표준화하고 자르는 높이인 cut을 읽습니다.

  1. 워드 트리 Z를 만들고 ax에 그립니다. 동물 이름은 90도 회전하고, 색상은 자르는 높이에서 멈춥니다.
  2. 자르는 위치를 회색 점선으로 표시한 다음, 그래프를 보여줍니다.
  3. 그룹 수를 출력합니다.

과일 11개와 자르는 높이 3.5를 사용하면 다음과 같습니다.

Cut at 3.5: 3 groups

Fruits라는 제목의 트리. 잎 이름은 위쪽을 향하고, 높이 3.5의 회색 점선이 세 가지 색상의 가지를 가로지릅니다. 레몬, 라임, 딸기; 오렌지, 자몽, 망고; 포도, 체리, 바나나, 사과, 배

Coddy가 트리를 설명합니다.

직접 해보기

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster

# 16마리의 고래와 돌고래: 몸길이 (m), 무게 (tonnes), 최대 잠수 깊이 (m)
whales = pd.read_csv("whales.csv")
names = list(whales["animal"])
scaled = StandardScaler().fit_transform(whales[["length_m", "weight_t", "dive_m"]])
cut = float(input())

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3)  # 트리 아래에 이름을 표시할 공간
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

비지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러