Con trăn SLINK

Như chúng ta đã biết, phân cụm tổng hợp theo thứ bậc bắt đầu bằng việc coi mỗi quan sát là một cụm riêng lẻ, sau đó hợp nhất các cụm lặp lại cho đến khi tất cả các điểm dữ liệu được hợp nhất thành một cụm duy nhất. Dendrograms được sử dụng để biểu thị kết quả phân cụm theo thứ bậc

Các cụm được hợp nhất dựa trên khoảng cách giữa chúng và để tính khoảng cách giữa các cụm chúng ta có các loại liên kết khác nhau

tiêu chí liên kết

Nó xác định khoảng cách giữa các bộ quan sát như là một hàm của khoảng cách theo cặp giữa các quan sát

  • Trong Liên kết đơn, khoảng cách giữa hai cụm là khoảng cách tối thiểu giữa các thành viên của hai cụm
  • Trong Liên kết hoàn chỉnh, khoảng cách giữa hai cụm là khoảng cách tối đa giữa các thành viên của hai cụm
  • Trong Liên kết trung bình, khoảng cách giữa hai cụm là trung bình cộng của tất cả các khoảng cách giữa các thành viên của hai cụm
  • Trong Liên kết trung tâm, khoảng cách giữa hai cụm là khoảng cách giữa các trọng tâm của chúng

Con trăn SLINK
Minh họa các liên kết (Hình ảnh của tác giả)

Trong bài viết này, chúng tôi mong muốn tìm hiểu quy trình Phân cụm bằng Phương pháp Liên kết Đơn

Phân cụm bằng liên kết đơn

Bắt đầu với việc nhập các thư viện cần thiết

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import scipy.cluster.hierarchy as shc
from scipy.spatial.distance import squareform, pdist

Hãy để chúng tôi tạo dữ liệu đồ chơi bằng cách sử dụng numpy. ngẫu nhiên. mẫu thử ngẫu nhiên

a = np.random.random_sample(size = 5)
b = np.random.random_sample(size = 5)

Khi chúng tôi tạo các điểm dữ liệu ngẫu nhiên, chúng tôi sẽ tạo khung dữ liệu gấu trúc

point = ['P1','P2','P3','P4','P5']
data = pd.DataFrame({'Point':point, 'a':np.round(a,2), 'b':np.round(b,2)})
data = data.set_index('Point')
data

Xem qua dữ liệu đồ chơi của chúng tôi. Trông sạch sẽ. Hãy để chúng tôi chuyển sang các bước phân cụm

Bước 1. Trực quan hóa dữ liệu bằng Biểu đồ phân tán

plt.figure(figsize=(8,5))
plt.scatter(data['a'], data['b'], c='r', marker='*')
plt.xlabel('Column a')
plt.ylabel('column b')
plt.title('Scatter Plot of x and y')for j in data.itertuples():
    plt.annotate(j.Index, (j.a, j.b), fontsize=15)

Con trăn SLINK
Âm mưu phân tán của a, b (Hình ảnh của tác giả)

Bước 2. Tính ma trận khoảng cách trong phương pháp Euclide bằng pdist

dist = pd.DataFrame(squareform(pdist(data[[‘a’, ‘b’]]), ‘euclidean’), columns=data.index.values, index=data.index.values)

Để thuận tiện cho chúng ta, sẽ chỉ xem xét các giá trị cận dưới của ma trận như hình bên dưới

Ma trận khoảng cách

Bước 3. Tìm khoảng cách nhỏ nhất và hợp nhất chúng thành một cụm

Ta thấy các điểm P3, P4 có khoảng cách nhỏ nhất là “0. 30232”. Vì vậy, trước tiên chúng tôi sẽ hợp nhất chúng thành một cụm

Bước 4. Tính lại ma trận khoảng cách sau khi tạo cụm

Cập nhật khoảng cách giữa cụm (P3,P4) thành P1

= Min(dist(P3,P4), P1)) -> Min(dist(P3,P1),dist(P4,P1))

= Tối thiểu(0. 59304, 0. 46098)

= 0. 46098

Cập nhật khoảng cách giữa cụm (P3,P4) thành P2

= Min(dist(P3,P4), P2) -> Min(dist(P3,P2),dist(P4,P2))

= Tối thiểu(0. 77369, 0. 61612)

= 0. 61612

Cập nhật khoảng cách giữa cụm (P3,P4) thành P5

= Min(dist(P3,P4), P5) -> Min(dist(P3,P5),dist(P4,P5))

= Tối thiểu(0. 45222, 0. 35847)

= 0. 35847

Cập nhật ma trận khoảng cách

Lặp lại các bước 3,4 cho đến khi chúng ta còn lại một cụm duy nhất

Sau khi tính toán lại ma trận khoảng cách, chúng ta cần tìm lại khoảng cách nhỏ nhất để tạo cụm

Ta thấy các điểm P2, P5 có khoảng cách nhỏ nhất là “0. 32388”. Vì vậy, chúng tôi sẽ nhóm chúng thành một cụm và tính toán lại ma trận khoảng cách

Cập nhật khoảng cách giữa cụm (P2,P5) thành P1

= Min(dist((P2,P5),P1)) -> Min(dist(P2,P1), dist(P5,P1))

= Tối thiểu(1. 04139, 0. 81841)

= 0. 81841

Cập nhật khoảng cách giữa cụm (P2,P5) thành (P3,P4)

= Min(dist((P2,P5), (P3,P4))) -> = Min(dist(P2,(P3,P4)), dist(P5,(P3,P4)))

= Tối thiểu(khoảng cách(0. 61612, 0. 35847))

= 0. 35847

Sau khi tính toán lại ma trận khoảng cách, chúng ta cần tìm lại khoảng cách nhỏ nhất

Con trăn SLINK

Cụm (P2,P5) có khoảng cách nhỏ nhất với cụm (P3,P4) “0. 35847”. Vì vậy, chúng tôi sẽ nhóm chúng lại với nhau

Cập nhật khoảng cách giữa cụm (P3,P4,P2,P5) thành P1

= Tối thiểu(khoảng cách(((P3,P4),(P2,P5)), P1))

= Tối thiểu(0. 46098, 0. 81841)

= 0. 46098

Với điều này, chúng tôi đã hoàn thành việc có được một cụm duy nhất

Về mặt lý thuyết, dưới đây là các bước phân cụm

  • Các điểm P3, P4 có khoảng cách nhỏ nhất và được hợp nhất
  • Các điểm P2, P5 có khoảng cách nhỏ nhất và được hợp nhất
  • Các cụm (P3, P4), (P2, P5) được phân cụm
  • Cụm (P3, P4, P2, P5) được hợp nhất với điểm dữ liệu P1

Chúng ta có thể hình dung điều tương tự bằng cách sử dụng dendrogram

plt.figure(figsize=(12,5)) 
plt.title("Dendrogram with Single inkage")  
dend = shc.dendrogram(shc.linkage(data[['a', 'b']], method='single'), labels=data.index)

Con trăn SLINK

Độ dài của các đường thẳng đứng trong dendrogram cho thấy khoảng cách. Ví dụ khoảng cách giữa các điểm P2, P5 là 0. 32388

Việc phân cụm từng bước mà chúng tôi đã thực hiện cũng giống như chương trình dendro 🙌

Ghi chú kết thúc

Đến cuối bài viết này, chúng ta đã quen thuộc với hoạt động chuyên sâu của phân cụm theo cấp bậc Liên kết đơn. Trong bài viết sắp tới, chúng ta sẽ tìm hiểu các phương thức liên kết khác

Người giới thiệu

phân cụm theo thứ bậc

Phân cụm liên kết đơn

Liên kết GitHub Repo để thanh toán Jupyter Notebook

Tôi hy vọng blog này sẽ giúp hiểu được hoạt động của Phân cụm phân cấp liên kết đơn. Xin hãy cho nó một cái vỗ tay 👏. học tập vui vẻ. 😊

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả

Công dụng của dendrogram là gì?

Chúng ta có thể sử dụng dendrogram để thể hiện mối quan hệ giữa bất kỳ loại thực thể nào miễn là chúng ta có thể đo lường mức độ tương đồng của chúng với nhau . Trong phân tích từ vựng, chúng tôi so sánh sự phân bố của các từ khác nhau giữa toàn bộ văn bản hoặc các đoạn văn bản.

Python phân cụm liên kết trung bình là gì?

Mối liên kết trung bình — Khoảng cách giữa tất cả thành viên của một cụm và tất cả thành viên của cụm khác được tính . Sau đó, giá trị trung bình của các khoảng cách này được sử dụng để xác định cụm nào sẽ hợp nhất.

Python phân cụm kết tụ là gì?

Chúng tôi sẽ sử dụng Phân cụm kết tụ, một loại phân cụm phân cấp tuân theo cách tiếp cận từ dưới lên . Chúng tôi bắt đầu bằng cách coi từng điểm dữ liệu là cụm riêng của nó. Sau đó, chúng tôi nối các cụm với nhau có khoảng cách ngắn nhất giữa chúng để tạo các cụm lớn hơn.

Sự khác biệt giữa liên kết đơn và cụm liên kết hoàn chỉnh là gì?

Liên kết đơn - Bạn liên kết hai cụm dựa trên khoảng cách tối thiểu giữa 2 phần tử. Một nhược điểm của phương pháp này là nó có xu hướng tạo ra các cụm dài mỏng do bạn tạo liên kết chỉ dựa trên 2 điểm. Liên kết hoàn chỉnh - Bạn liên kết 2 cụm dựa trên khoảng cách tối đa giữa 2 phần tử