일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MATLAB
- SQL
- MySQL
- 서평
- 파이썬
- python visualization
- 한빛미디어
- Tistory
- Visualization
- 텐서플로
- 티스토리
- 매틀랩
- 한빛미디어서평단
- Ga
- 월간결산
- 통계학
- Google Analytics
- 서평단
- 파이썬 시각화
- Linux
- 딥러닝
- Python
- Blog
- 리눅스
- 시각화
- 독후감
- 블로그
- tensorflow
- matplotlib
- Pandas
- Today
- Total
pbj0812의 코딩 일기
[수학] 최단 연결법 계산을 통한 덴드로그램 그리기 본문
0. 목표
- 최단 연결법 계산을 통한 덴드로그램 그리기
1. 준비
1) 예제 데이터
data2 = [[1, 1], [2, 2], [5, 5], [10, 10], [12, 12]]
2) 유클리드 거리 계산
- 파이썬 코드
- 결과
2. 실습
1) 최단 거리 검색
- 0과 1 사이의 거리가 가장 짦음(1.414214)
2) 0과 1을 하나로 묶고 각 집단 마다의 최소거리 계산
(1) d((2), (0, 1)) = min|d(2, 0), d(2, 1) = d(2, 1) = 4.242641
(2) d((3), (0, 1)) = min|d(3, 0), d(3, 1) = d(3, 1) = 11.313708
(3) d((4), (0, 1)) = min|d(4, 0), d(4, 1) = d(4, 1) = 14.142136
3) 정리
- 그림으로 나타내면
4) 3)에서 최단거리 검색
- 3과 4 사이의 거리가 가장 짧음(2.828427)
5) 3과 4를 하나로 묶고 각 집단 마다의 최소거리 계산
(1) d((0, 1), (3, 4)) = min|d((0, 1), 3), d((0, 1), 4) = d((0, 1), 3) = 11.313708
(2) d((2), (3, 4)) = min|d(2, 3), d(2, 4) = d(2, 3) = 7.071068
6) 정리
- 그림으로 나타내면
7) 6)에서 최단거리 검색
- 2와 (0, 1) 사이의 거리가 가장 짧음(4.242641)
8) 2와 (0, 1)을 하나로 묶고 각 집단 마다의 최소거리 계산
- d((3, 4), (0, 1, 2)) = min|d((3, 4), (0, 1)), d((3, 4), 2) = d((3, 4), 2) = 7.071068
9) 정리
- 그림으로 나타내면
8) 최종
- d(0, 1, 2, 3, 4) = 7.071068
3. scipy 모듈과 비교
1) 그림
from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt
X = np.array([[1, 1], [2, 2], [5, 5], [10, 10], [12, 12]])
Z = linkage(X, 'single')
fig = plt.figure(figsize=(25, 10))
dn = dendrogram(Z)
plt.show()
2) 수치확인
Z
4. 참고
- 군집분석
- scipy.cluster.hierarchy.linkage
'Science > 수학' 카테고리의 다른 글
[수학] python으로 최대공약수, 최소공배수 구하기(사람처럼 생각하기) (0) | 2020.09.25 |
---|---|
[수학] python을 이용한 파스칼의 삼각형 구현 (0) | 2020.09.23 |
[수학] python을 이용한 집합 연산하기 (0) | 2020.09.22 |
[수학] python으로 유클리드 거리 계산하기 (0) | 2020.09.07 |
[수학] 가우스 조던 소거법을 통한 연립방정식 계산(python) (0) | 2020.09.04 |